From d7736b038b14147a2069e4e5aabac040528d0dcd Mon Sep 17 00:00:00 2001 From: Michal Sekletar Date: Fri, 19 Sep 2014 17:14:10 +0200 Subject: [PATCH] cgroup: don't trim cgroup trees created by someone else In cases when there is a cgroup tree in a controller hierarchy which was not created by us, but it looks like it was (i.e. cgroup path is the same as the one in systemd's named hierarchy) we shouldn't delete it. Origin: http://lists.freedesktop.org/archives/systemd-devel/2014-September/023276.html Bug-Debian: https://bugs.debian.org/777601 Gbp-Pq: Topic debian Gbp-Pq: Name cgroup-don-t-trim-cgroup-trees-created-by-someone-el.patch --- src/basic/cgroup-util.c | 2 -- src/core/cgroup.c | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/src/basic/cgroup-util.c b/src/basic/cgroup-util.c index 038ece4b..1d20bb5f 100644 --- a/src/basic/cgroup-util.c +++ b/src/basic/cgroup-util.c @@ -2135,8 +2135,6 @@ int cg_create_everywhere(CGroupMask supported, CGroupMask mask, const char *path if (mask & bit) (void) cg_create(n, path); - else if (supported & bit) - (void) cg_trim(n, path, true); } return created; diff --git a/src/core/cgroup.c b/src/core/cgroup.c index bb024362..1b695c60 100644 --- a/src/core/cgroup.c +++ b/src/core/cgroup.c @@ -1858,7 +1858,7 @@ void unit_prune_cgroup(Unit *u) { is_root_slice = unit_has_name(u, SPECIAL_ROOT_SLICE); - r = cg_trim_everywhere(u->manager->cgroup_supported, u->cgroup_path, !is_root_slice); + r = cg_trim_everywhere(u->cgroup_realized_mask, u->cgroup_path, !is_root_slice); if (r < 0) { log_unit_debug_errno(u, r, "Failed to destroy cgroup %s, ignoring: %m", u->cgroup_path); return; -- 2.30.2