From: Lennart Poettering Date: Thu, 30 Jun 2011 00:41:01 +0000 (+0200) Subject: unit: consider all cgroups in the name=systemd hierarchy, even when the user has... X-Git-Tag: v30~88 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=e025b4c306d4b0895786839ebbb934188edc6e61;ds=sidebyside unit: consider all cgroups in the name=systemd hierarchy, even when the user has specified an explicit path in it --- diff --git a/src/unit.c b/src/unit.c index 87b7edf14..e3687d473 100644 --- a/src/unit.c +++ b/src/unit.c @@ -1741,10 +1741,13 @@ int unit_add_cgroup(Unit *u, CGroupBonding *b) { assert(b->path); - if (!b->controller) + if (!b->controller) { if (!(b->controller = strdup(SYSTEMD_CGROUP_CONTROLLER))) return -ENOMEM; + b->ours = true; + } + /* Ensure this hasn't been added yet */ assert(!b->unit); @@ -1789,6 +1792,7 @@ static char *default_cgroup_path(Unit *u) { int unit_add_cgroup_from_text(Unit *u, const char *name) { char *controller = NULL, *path = NULL; CGroupBonding *b = NULL; + bool ours = false; int r; assert(u); @@ -1797,11 +1801,15 @@ int unit_add_cgroup_from_text(Unit *u, const char *name) { if ((r = cg_split_spec(name, &controller, &path)) < 0) return r; - if (!path) + if (!path) { path = default_cgroup_path(u); + ours = true; + } - if (!controller) + if (!controller) { controller = strdup(SYSTEMD_CGROUP_CONTROLLER); + ours = true; + } if (!path || !controller) { free(path); @@ -1822,7 +1830,8 @@ int unit_add_cgroup_from_text(Unit *u, const char *name) { b->controller = controller; b->path = path; - b->ours = false; + b->ours = ours; + b->essential = streq(controller, SYSTEMD_CGROUP_CONTROLLER); if ((r = unit_add_cgroup(u, b)) < 0) goto fail;