[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