diff options
author | Lennart Poettering <lennart@poettering.net> | 2012-05-03 21:54:44 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2012-05-03 21:54:44 +0200 |
commit | 88f3e0c91f08c65a479e1aa09f171550b744d829 (patch) | |
tree | 5fb94a693b555dd43952fcec34b4213b12f07839 /src/core/cgroup.c | |
parent | 3beddc7861783347eb0aaf5fa492e8b2aef9e691 (diff) |
service: explicitly remove control/ subcgroup after each control command
The kernel will only notify us of cgroups running empty if no subcgroups
exist anymore. Hence make sure we don't leave our own control/ subcgroup
around longer than necessary.
https://bugzilla.redhat.com/show_bug.cgi?id=818381
Diffstat (limited to 'src/core/cgroup.c')
-rw-r--r-- | src/core/cgroup.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/core/cgroup.c b/src/core/cgroup.c index e07d1ed3c9..713c1ca768 100644 --- a/src/core/cgroup.c +++ b/src/core/cgroup.c @@ -194,7 +194,7 @@ int cgroup_bonding_set_task_access_list(CGroupBonding *first, mode_t mode, uid_t return 0; } -int cgroup_bonding_kill(CGroupBonding *b, int sig, bool sigcont, Set *s, const char *cgroup_suffix) { +int cgroup_bonding_kill(CGroupBonding *b, int sig, bool sigcont, bool rem, Set *s, const char *cgroup_suffix) { char *p = NULL; const char *path; int r; @@ -215,13 +215,13 @@ int cgroup_bonding_kill(CGroupBonding *b, int sig, bool sigcont, Set *s, const c } else path = b->path; - r = cg_kill_recursive(b->controller, path, sig, sigcont, true, false, s); + r = cg_kill_recursive(b->controller, path, sig, sigcont, true, rem, s); free(p); return r; } -int cgroup_bonding_kill_list(CGroupBonding *first, int sig, bool sigcont, Set *s, const char *cgroup_suffix) { +int cgroup_bonding_kill_list(CGroupBonding *first, int sig, bool sigcont, bool rem, Set *s, const char *cgroup_suffix) { CGroupBonding *b; Set *allocated_set = NULL; int ret = -EAGAIN, r; @@ -234,7 +234,7 @@ int cgroup_bonding_kill_list(CGroupBonding *first, int sig, bool sigcont, Set *s return -ENOMEM; LIST_FOREACH(by_unit, b, first) { - r = cgroup_bonding_kill(b, sig, sigcont, s, cgroup_suffix); + r = cgroup_bonding_kill(b, sig, sigcont, rem, s, cgroup_suffix); if (r < 0) { if (r == -EAGAIN || r == -ESRCH) continue; |