chiark / gitweb /
core: don't consider a unit's cgroup empty if only a subcgroup runs empty
[elogind.git] / src / core / cgroup.c
index 1c818ab300828989c54ea95981649ce351abe00f..c7f1e77c6c9813e25b0b60a83a22dffc4845b265 100644 (file)
@@ -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;
 }