X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fcore%2Fcgroup.c;h=b5d13478561831124abc69301c8094b2d373c1c4;hb=b9316fb0f39fff3df792e4e72eb491ec4265b91f;hp=1c818ab300828989c54ea95981649ce351abe00f;hpb=0a1eb06d9aacc1f007be04c4133031e0acc91cdd;p=elogind.git diff --git a/src/core/cgroup.c b/src/core/cgroup.c index 1c818ab30..b5d134785 100644 --- a/src/core/cgroup.c +++ b/src/core/cgroup.c @@ -533,7 +533,7 @@ void unit_destroy_cgroup(Unit *u) { r = cg_trim_with_mask(u->cgroup_mask, u->cgroup_path, true); if (r < 0) - log_error("Failed to destroy cgroup %s: %s", u->cgroup_path, strerror(-r)); + log_debug("Failed to destroy cgroup %s: %s", u->cgroup_path, strerror(-r)); hashmap_remove(u->manager->cgroup_unit, u->cgroup_path); @@ -728,13 +728,16 @@ int manager_notify_cgroup_empty(Manager *m, const char *cgroup) { assert(m); assert(cgroup); - r = cg_is_empty_recursive(SYSTEMD_CGROUP_CONTROLLER, cgroup, true); - if (r == 0) - return 0; - u = manager_get_unit_by_cgroup(m, cgroup); - if (u && UNIT_VTABLE(u)->notify_cgroup_empty) - UNIT_VTABLE(u)->notify_cgroup_empty(u); + if (u) { + r = cg_is_empty_recursive(SYSTEMD_CGROUP_CONTROLLER, u->cgroup_path, true); + if (r > 0) { + if (UNIT_VTABLE(u)->notify_cgroup_empty) + UNIT_VTABLE(u)->notify_cgroup_empty(u); + + unit_add_to_gc_queue(u); + } + } return 0; }