[Devel] [RFC 26/54] cgroup: fix CONFIG_VE=n build
Eva Kurchatova
eva.kurchatova at virtuozzo.com
Wed Apr 29 22:58:26 MSK 2026
Signed-off-by: Eva Kurchatova <eva.kurchatova at virtuozzo.com>
---
kernel/cgroup/cgroup.c | 21 +++++++++++++++++++--
1 file changed, 19 insertions(+), 2 deletions(-)
diff --git a/kernel/cgroup/cgroup.c b/kernel/cgroup/cgroup.c
index 932414b882dd..d3c1ee7174bf 100644
--- a/kernel/cgroup/cgroup.c
+++ b/kernel/cgroup/cgroup.c
@@ -1428,7 +1428,9 @@ static void cgroup_destroy_root(struct cgroup_root *root)
cgroup_rstat_exit(cgrp);
kernfs_destroy_root(root->kf_root);
+#ifdef CONFIG_VE
cgroot_ve_cleanup_ra_data(root);
+#endif
cgroup_free_root(root);
}
@@ -2445,7 +2447,9 @@ static void init_cgroup_housekeeping(struct cgroup *cgrp)
INIT_LIST_HEAD(&cgrp->self.children);
INIT_LIST_HEAD(&cgrp->cset_links);
INIT_LIST_HEAD(&cgrp->pidlists);
+#ifdef CONFIG_VE
INIT_LIST_HEAD(&cgrp->release_list);
+#endif
mutex_init(&cgrp->pidlist_mutex);
cgrp->self.cgroup = cgrp;
cgrp->self.flags |= CSS_ONLINE;
@@ -2459,6 +2463,9 @@ static void init_cgroup_housekeeping(struct cgroup *cgrp)
INIT_LIST_HEAD(&cgrp->e_csets[ssid]);
init_waitqueue_head(&cgrp->offline_waitq);
+#ifndef CONFIG_VE
+ INIT_WORK(&cgrp->release_agent_work, cgroup1_release_agent);
+#endif
}
void init_cgroup_root(struct cgroup_fs_context *ctx)
@@ -2473,8 +2480,13 @@ void init_cgroup_root(struct cgroup_fs_context *ctx)
/* DYNMODS must be modified through cgroup_favor_dynmods() */
root->flags = ctx->flags & ~CGRP_ROOT_FAVOR_DYNMODS;
+#ifdef CONFIG_VE
if (ctx->release_agent)
ve_ra_data_set(get_exec_env(), root, ctx->release_agent);
+#else
+ if (ctx->release_agent)
+ strscpy(root->release_agent_path, ctx->release_agent, PATH_MAX);
+#endif
if (ctx->name)
strscpy(root->name, ctx->name, MAX_CGROUP_ROOT_NAMELEN);
if (ctx->cpuset_clone_children)
@@ -2647,10 +2659,10 @@ static int cgroup_get_tree(struct fs_context *fc)
{
struct cgroup_fs_context *ctx = cgroup_fc2context(fc);
int ret;
-
+#ifdef CONFIG_VE
if (ve_hide_cgroups(&cgrp_dfl_root))
return -EPERM;
-
+#endif
WRITE_ONCE(cgrp_dfl_visible, true);
cgroup_get_live(&cgrp_dfl_root.cgrp);
ctx->root = &cgrp_dfl_root;
@@ -6434,6 +6446,7 @@ static struct cgroup *cgroup_create(struct cgroup *parent, const char *name,
*/
if (!cgroup_on_dfl(cgrp))
cgrp->subtree_control = cgroup_control(cgrp);
+#ifdef CONFIG_VE
else
/*
* Hide ve controller by default. Note that ve0 cgroup files
@@ -6441,6 +6454,7 @@ static struct cgroup *cgroup_create(struct cgroup *parent, const char *name,
* not created through cgroup_create().
*/
cgrp->hidden_ss_mask = 1 << ve_cgrp_id;
+#endif
cgroup_propagate_control(cgrp);
@@ -6668,7 +6682,10 @@ static int cgroup_destroy_locked(struct cgroup *cgrp)
* the migration path.
*/
cgrp->self.flags &= ~CSS_ONLINE;
+
+#ifdef CONFIG_VE
ve_rm_from_release_list(cgrp);
+#endif
spin_lock_irq(&css_set_lock);
list_for_each_entry(link, &cgrp->cset_links, cset_link)
--
2.54.0
More information about the Devel
mailing list