]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
cgroup: additional fix for deprecated ns subsystem
authorDavid Ward <david.ward@ll.mit.edu>
Thu, 3 May 2012 22:50:15 +0000 (00:50 +0200)
committerDaniel Lezcano <daniel.lezcano@free.fr>
Thu, 3 May 2012 22:50:15 +0000 (00:50 +0200)
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 <david.ward@ll.mit.edu>
Signed-off-by: Daniel Lezcano <dlezcano@fr.ibm.com>
src/lxc/cgroup.c

index 9af199d320713a4dd035112af51d20f34edf5581..e5145f9051ad69541513f7fe8a9d59e66547530d 100644 (file)
@@ -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/<cgroup>/<init-cgroup>/lxc */
+       /* cgparent is the parent dir, e.g., /sys/fs/cgroup/<cgroup>/<init-cgroup>/lxc */
        /* (remember get_init_cgroup() returns a path starting with '/') */
-       /* cgname is the full name,    /sys/fs/cgroup/</cgroup>/<init-cgroup>/lxc/name */
+       /* cgname is the full name, e.g., /sys/fs/cgroup/<cgroup>/<init-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/<cgroup>/<init-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;