From: David Ward Date: Thu, 3 May 2012 22:50:15 +0000 (+0200) Subject: cgroup: additional fix for deprecated ns subsystem X-Git-Tag: lxc-0.8.0~66 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=257e5824e485816780035d93084db0852a4bfcee;p=thirdparty%2Flxc.git cgroup: additional fix for deprecated ns subsystem When a hierarchy contains the 'ns' subsystem, do not append '/lxc' to the parent cgroup. Update surrounding comments for consistency. Signed-off-by: David Ward Signed-off-by: Daniel Lezcano --- diff --git a/src/lxc/cgroup.c b/src/lxc/cgroup.c index 9af199d32..e5145f905 100644 --- a/src/lxc/cgroup.c +++ b/src/lxc/cgroup.c @@ -305,9 +305,9 @@ static int lxc_one_cgroup_create(const char *name, char initcgroup[MAXPATHLEN]; int flags, ret; - /* cgparent is the parent dir, /sys/fs/cgroup///lxc */ + /* cgparent is the parent dir, e.g., /sys/fs/cgroup///lxc */ /* (remember get_init_cgroup() returns a path starting with '/') */ - /* cgname is the full name, /sys/fs/cgroup///lxc/name */ + /* cgname is the full name, e.g., /sys/fs/cgroup///lxc/name */ ret = snprintf(cginit, MAXPATHLEN, "%s%s", mntent->mnt_dir, get_init_cgroup(NULL, mntent, initcgroup)); if (ret < 0 || ret >= MAXPATHLEN) { @@ -315,7 +315,10 @@ static int lxc_one_cgroup_create(const char *name, return -1; } - ret = snprintf(cgparent, MAXPATHLEN, "%s/lxc", cginit); + flags = get_cgroup_flags(mntent); + + ret = snprintf(cgparent, MAXPATHLEN, "%s%s", cginit, + (flags & CGROUP_NS_CGROUP) ? "" : "/lxc"); if (ret < 0 || ret >= MAXPATHLEN) { SYSERROR("Failed creating pathname for cgroup parent (%d)\n", ret); return -1; @@ -326,8 +329,6 @@ static int lxc_one_cgroup_create(const char *name, return -1; } - flags = get_cgroup_flags(mntent); - /* Do we have the deprecated ns_cgroup subsystem? */ if (flags & CGROUP_NS_CGROUP) { WARN("using deprecated ns_cgroup"); @@ -356,7 +357,7 @@ static int lxc_one_cgroup_create(const char *name, return -1; } - /* if /sys/fs/cgroup///lxc does not exist, create it */ + /* if cgparent does not exist, create it */ if (access(cgparent, F_OK) && mkdir(cgparent, 0755)) { SYSERROR("failed to create '%s' directory", cgparent); return -1;