summaryrefslogtreecommitdiff
path: root/src/core/cgroup.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2012-05-03 21:54:44 +0200
committerLennart Poettering <lennart@poettering.net>2012-05-03 21:54:44 +0200
commit88f3e0c91f08c65a479e1aa09f171550b744d829 (patch)
tree5fb94a693b555dd43952fcec34b4213b12f07839 /src/core/cgroup.c
parent3beddc7861783347eb0aaf5fa492e8b2aef9e691 (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.c8
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;