]> git.ipfire.org Git - thirdparty/libcgroup.git/commitdiff
create_cgroup_from_name_value_pairs can't deal n/v pairs from the same controller
authorIvana Hutarova Varekova <varekova@redhat.com>
Tue, 30 Jul 2013 07:57:07 +0000 (09:57 +0200)
committerIvana Hutarova Varekova <varekova@redhat.com>
Tue, 30 Jul 2013 07:57:07 +0000 (09:57 +0200)
create_cgroup_from_name_value_pairs can't deal name/value pairs from the
same controller
E.G.
    cgset -r cpu.cfs_quota_us=400000 -r cpu.cfs_period_us=400000 cgroup
This patch fix the problem.

Signed-off-by: Ivana Hutarova Varekova <varekova@redhat.com>
Acked-by: Jan Safranek <jsafrane@redhat.com>
src/wrapper.c

index dfcfc8f438cf740f781e632c207a6506ed791aba..c03472aa39eafe886f46722dc65fcceadde97ae7 100644 (file)
@@ -556,12 +556,17 @@ struct cgroup *create_cgroup_from_name_value_pairs(const char *name,
                strncpy(con, name_value[i].name, FILENAME_MAX);
                strtok(con, ".");
 
-               /* add relevant controller */
-               cgc = cgroup_add_controller(src_cgroup, con);
+               /* find out whether we have to add the controller or
+                  cgroup already contains it */
+               cgc = cgroup_get_controller(src_cgroup, con);
                if (!cgc) {
-                       fprintf(stderr, "controller %s can't be add\n",
-                                       con);
-                       goto scgroup_err;
+                       /* add relevant controller */
+                       cgc = cgroup_add_controller(src_cgroup, con);
+                       if (!cgc) {
+                               fprintf(stderr, "controller %s can't be add\n",
+                                               con);
+                               goto scgroup_err;
+                       }
                }
 
                /* add name-value pair to this controller */