]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
lxc_global_config_value can return the default lxc.cgroup.pattern whether root or...
authorKATOH Yasufumi <karma@jazz.email.ne.jp>
Thu, 2 Oct 2014 09:01:06 +0000 (18:01 +0900)
committerStéphane Graber <stgraber@ubuntu.com>
Tue, 25 Nov 2014 22:01:01 +0000 (17:01 -0500)
>>> On Tue, 30 Sep 2014 19:48:09 +0000
    in message   "Re: [lxc-devel] [PATCH] lxc-config can show lxc.cgroup.(use|pattern)"
                  Serge Hallyn-san wrote:

> I think it would be worth also augmenting
> lxc_global_config_value() to return a default lxc.cgroup.use
> for 'all', and a default lxc.cgroup.pattern ("/lxc/%n" for root
> or "%n" for non-root).

lxc.cgroup.pattern is like this? (^_^;)

Signed-off-by: KATOH Yasufumi <karma@jazz.email.ne.jp>
Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
src/lxc/cgfs.c
src/lxc/cgmanager.c
src/lxc/utils.c

index 796b2202fe5154792e216c88714188e8046cc5ff..cee3c0c65a8ca99e3d537d93b622d1368020fd11 100644 (file)
@@ -2226,15 +2226,7 @@ static void *cgfs_init(const char *name)
        if (!d->name)
                goto err1;
 
-       /* if we are running as root, use system cgroup pattern, otherwise
-        * just create a cgroup under the current one. But also fall back to
-        * that if for some reason reading the configuration fails and no
-        * default value is available
-        */
-       if (geteuid() == 0)
-               d->cgroup_pattern = lxc_global_config_value("lxc.cgroup.pattern");
-       if (!d->cgroup_pattern)
-               d->cgroup_pattern = "%n";
+       d->cgroup_pattern = lxc_global_config_value("lxc.cgroup.pattern");
 
        d->meta = lxc_cgroup_load_meta();
        if (!d->meta) {
index ada35d732413816ce5850bd09da5bef527152461..6fe830589d8e6b019c40b81a1215f88a2ee5fffd 100644 (file)
@@ -532,15 +532,8 @@ static void *cgm_init(const char *name)
                goto err1;
        }
 
-       /* if we are running as root, use system cgroup pattern, otherwise
-        * just create a cgroup under the current one. But also fall back to
-        * that if for some reason reading the configuration fails and no
-        * default value is available
-        */
-       if (geteuid() == 0)
-               d->cgroup_pattern = lxc_global_config_value("lxc.cgroup.pattern");
-       if (!d->cgroup_pattern)
-               d->cgroup_pattern = "%n";
+       d->cgroup_pattern = lxc_global_config_value("lxc.cgroup.pattern");
+
        // cgm_create immediately gets called so keep the connection open
        return d;
 
index efec4149056c10ab16193b03055a99eadb149ade..ca86c4c57dd1a8282e132d44c4edff15fe795fe4 100644 (file)
@@ -238,7 +238,7 @@ const char *lxc_global_config_value(const char *option_name)
                { "lxc.bdev.zfs.root",      DEFAULT_ZFSROOT },
                { "lxc.lxcpath",            NULL            },
                { "lxc.default_config",     NULL            },
-               { "lxc.cgroup.pattern",     DEFAULT_CGROUP_PATTERN },
+               { "lxc.cgroup.pattern",     NULL            },
                { "lxc.cgroup.use",         NULL            },
                { NULL, NULL },
        };
@@ -252,6 +252,7 @@ const char *lxc_global_config_value(const char *option_name)
        char *user_config_path = NULL;
        char *user_default_config_path = NULL;
        char *user_lxc_path = NULL;
+       char *user_cgroup_pattern = NULL;
 
        if (geteuid() > 0) {
                const char *user_home = getenv("HOME");
@@ -265,11 +266,13 @@ const char *lxc_global_config_value(const char *option_name)
                sprintf(user_config_path, "%s/.config/lxc/lxc.conf", user_home);
                sprintf(user_default_config_path, "%s/.config/lxc/default.conf", user_home);
                sprintf(user_lxc_path, "%s/.local/share/lxc/", user_home);
+               user_cgroup_pattern = strdup("%n");
        }
        else {
                user_config_path = strdup(LXC_GLOBAL_CONF);
                user_default_config_path = strdup(LXC_DEFAULT_CONFIG);
                user_lxc_path = strdup(LXCPATH);
+               user_cgroup_pattern = strdup(DEFAULT_CGROUP_PATTERN);
        }
 
        const char * const (*ptr)[2];
@@ -285,6 +288,7 @@ const char *lxc_global_config_value(const char *option_name)
                free(user_config_path);
                free(user_default_config_path);
                free(user_lxc_path);
+               free(user_cgroup_pattern);
                errno = EINVAL;
                return NULL;
        }
@@ -293,6 +297,7 @@ const char *lxc_global_config_value(const char *option_name)
                free(user_config_path);
                free(user_default_config_path);
                free(user_lxc_path);
+               free(user_cgroup_pattern);
                return values[i];
        }
 
@@ -351,14 +356,22 @@ const char *lxc_global_config_value(const char *option_name)
                remove_trailing_slashes(user_lxc_path);
                values[i] = user_lxc_path;
                free(user_default_config_path);
+               free(user_cgroup_pattern);
        }
        else if (strcmp(option_name, "lxc.default_config") == 0) {
                values[i] = user_default_config_path;
                free(user_lxc_path);
+               free(user_cgroup_pattern);
+       }
+       else if (strcmp(option_name, "lxc.cgroup.pattern") == 0) {
+               values[i] = user_cgroup_pattern;
+               free(user_default_config_path);
+               free(user_lxc_path);
        }
        else {
                free(user_default_config_path);
                free(user_lxc_path);
+               free(user_cgroup_pattern);
                values[i] = (*ptr)[1];
        }
        /* special case: if default value is NULL,