]> 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)
committerSerge Hallyn <serge.hallyn@ubuntu.com>
Mon, 20 Oct 2014 21:45:20 +0000 (16:45 -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 9fa47cd76070baeaf6c8e4dfbc79b40fb628080a..cde2c8f48826ce0157f2b07ba54a9da62655cc1a 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 4e26cc0e987f5604985f9c72c2fc51a13c9f28e1..e1840cebcb65ac25d3a5c4f0a8e893116ed7b987 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 fced210962651094f291515677e37982da4d6f1c..b5729821039c546b0fa62609ca27ef9c04ffef80 100644 (file)
@@ -266,7 +266,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 },
        };
@@ -280,6 +280,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");
@@ -293,11 +294,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];
@@ -313,6 +316,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;
        }
@@ -321,6 +325,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];
        }
 
@@ -379,14 +384,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,