cgroups/cgfsng: rework cgfsng_setup_limits()

parent 6782b4b2
...@@ -2738,16 +2738,30 @@ static int bpf_device_cgroup_prepare(struct cgroup_ops *ops, ...@@ -2738,16 +2738,30 @@ static int bpf_device_cgroup_prepare(struct cgroup_ops *ops,
__cgfsng_ops static bool cgfsng_setup_limits(struct cgroup_ops *ops, __cgfsng_ops static bool cgfsng_setup_limits(struct cgroup_ops *ops,
struct lxc_handler *handler) struct lxc_handler *handler)
{ {
struct lxc_list *iterator; struct lxc_list *cgroup_settings, *iterator;
struct hierarchy *h = ops->unified; struct hierarchy *h;
struct lxc_conf *conf = handler->conf; struct lxc_conf *conf;
struct lxc_list *cgroup_settings = &conf->cgroup2;
if (lxc_list_empty(cgroup_settings)) if (!ops)
return ret_set_errno(false, ENOENT);
if (!ops->hierarchies)
return true; return true;
if (!h) if (!ops->container_cgroup)
return ret_set_errno(false, EINVAL);
if (!handler || !handler->conf)
return ret_set_errno(false, EINVAL);
conf = handler->conf;
if (lxc_list_empty(&conf->cgroup2))
return true;
cgroup_settings = &conf->cgroup2;
if (!ops->unified)
return false; return false;
h = ops->unified;
lxc_list_for_each (iterator, cgroup_settings) { lxc_list_for_each (iterator, cgroup_settings) {
__do_free char *fullpath = NULL; __do_free char *fullpath = NULL;
...@@ -2762,17 +2776,15 @@ __cgfsng_ops static bool cgfsng_setup_limits(struct cgroup_ops *ops, ...@@ -2762,17 +2776,15 @@ __cgfsng_ops static bool cgfsng_setup_limits(struct cgroup_ops *ops,
cg->subsystem, NULL); cg->subsystem, NULL);
ret = lxc_write_to_file(fullpath, cg->value, ret = lxc_write_to_file(fullpath, cg->value,
strlen(cg->value), false, 0666); strlen(cg->value), false, 0666);
if (ret < 0) { if (ret < 0)
SYSERROR("Failed to set \"%s\" to \"%s\"", return log_error_errno(false,
cg->subsystem, cg->value); errno, "Failed to set \"%s\" to \"%s\"",
return false; cg->subsystem, cg->value);
}
} }
TRACE("Set \"%s\" to \"%s\"", cg->subsystem, cg->value); TRACE("Set \"%s\" to \"%s\"", cg->subsystem, cg->value);
} }
INFO("Limits for the unified cgroup hierarchy have been setup"); return log_info(true, "Limits for the unified cgroup hierarchy have been setup");
return true;
} }
__cgfsng_ops bool cgfsng_devices_activate(struct cgroup_ops *ops, __cgfsng_ops bool cgfsng_devices_activate(struct cgroup_ops *ops,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment