diff options
author | Lennart Poettering <lennart@poettering.net> | 2013-09-23 21:56:05 -0500 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2013-09-25 03:38:17 +0200 |
commit | 13b84ec7df103ce388910a2b868fe1668c1e27ef (patch) | |
tree | 773d34a85343a61b3368ef5a67a156ffcf14689a /src/core/cgroup.c | |
parent | 8bd94f7a03032ac9218e88e8e099e974627a3bcb (diff) |
cgroup: if we do a cgroup operation then do something on all supported controllers
Previously we did operations like attach, trim or migrate only on the
controllers that were enabled for a specific unit. With this changes we
will now do them for all supproted controllers, and fall back to all
possible prefix paths if the specified paths do not exist.
This fixes issues if a controller is being disabled for a unit where it
was previously enabled, and makes sure that all processes stay as "far
down" the tree as groups exist.
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 e66b8f4851..8bf4d896de 100644 --- a/src/core/cgroup.c +++ b/src/core/cgroup.c @@ -397,13 +397,13 @@ static int unit_create_cgroups(Unit *u, CGroupControllerMask mask) { } /* First, create our own group */ - r = cg_create_with_mask(mask, path); + r = cg_create_everywhere(u->manager->cgroup_supported, mask, path); if (r < 0) log_error("Failed to create cgroup %s: %s", path, strerror(-r)); /* Then, possibly move things over */ - if (u->cgroup_path && !streq(path, u->cgroup_path)) { - r = cg_migrate_with_mask(mask, u->cgroup_path, path); + if (u->cgroup_path) { + r = cg_migrate_everywhere(u->manager->cgroup_supported, u->cgroup_path, path); if (r < 0) log_error("Failed to migrate cgroup %s: %s", path, strerror(-r)); } @@ -537,7 +537,7 @@ void unit_destroy_cgroup(Unit *u) { if (!u->cgroup_path) return; - r = cg_trim_with_mask(u->cgroup_mask, u->cgroup_path, !unit_has_name(u, SPECIAL_ROOT_SLICE)); + r = cg_trim_everywhere(u->manager->cgroup_supported, u->cgroup_path, !unit_has_name(u, SPECIAL_ROOT_SLICE)); if (r < 0) log_debug("Failed to destroy cgroup %s: %s", u->cgroup_path, strerror(-r)); |