cgfsng: cgfsng_create()

parent e56639fb
...@@ -1765,9 +1765,8 @@ static void remove_path_for_hierarchy(struct hierarchy *h, char *cgname) ...@@ -1765,9 +1765,8 @@ static void remove_path_for_hierarchy(struct hierarchy *h, char *cgname)
h->fullcgpath = NULL; h->fullcgpath = NULL;
} }
/* /* Try to create the same cgroup in all hierarchies. Start with cgroup_pattern;
* Try to create the same cgroup in all hierarchies. * next cgroup_pattern-1, -2, ..., -999.
* Start with cgroup_pattern; next cgroup_pattern-1, -2, ..., -999
*/ */
static inline bool cgfsng_create(void *hdata) static inline bool cgfsng_create(void *hdata)
{ {
...@@ -1804,6 +1803,7 @@ again: ...@@ -1804,6 +1803,7 @@ again:
ERROR("Too many conflicting cgroup names"); ERROR("Too many conflicting cgroup names");
goto out_free; goto out_free;
} }
if (idx) { if (idx) {
int ret; int ret;
...@@ -1818,10 +1818,11 @@ again: ...@@ -1818,10 +1818,11 @@ again:
} }
} }
} }
for (i = 0; hierarchies[i]; i++) { for (i = 0; hierarchies[i]; i++) {
if (!create_path_for_hierarchy(hierarchies[i], container_cgroup)) { if (!create_path_for_hierarchy(hierarchies[i], container_cgroup)) {
int j; int j;
ERROR("Failed to create \"%s\"", hierarchies[i]->fullcgpath); ERROR("Failed to create cgroup \"%s\"", hierarchies[i]->fullcgpath);
free(hierarchies[i]->fullcgpath); free(hierarchies[i]->fullcgpath);
hierarchies[i]->fullcgpath = NULL; hierarchies[i]->fullcgpath = NULL;
for (j = 0; j < i; j++) for (j = 0; j < i; j++)
...@@ -1830,12 +1831,14 @@ again: ...@@ -1830,12 +1831,14 @@ again:
goto again; goto again;
} }
} }
/* Done */
d->container_cgroup = container_cgroup; d->container_cgroup = container_cgroup;
return true; return true;
out_free: out_free:
free(container_cgroup); free(container_cgroup);
return false; return false;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment