unit_add_to_gc_queue(u);
- if (UNIT_VTABLE(u)->notify_cgroup_empty)
+ if (IN_SET(unit_active_state(u), UNIT_INACTIVE, UNIT_FAILED))
+ unit_prune_cgroup(u);
+ else if (UNIT_VTABLE(u)->notify_cgroup_empty)
UNIT_VTABLE(u)->notify_cgroup_empty(u);
return 0;
if (IN_SET(s->state, SCOPE_RUNNING, SCOPE_ABANDONED, SCOPE_STOP_SIGTERM, SCOPE_STOP_SIGKILL))
scope_enter_dead(s, SCOPE_SUCCESS);
-
- /* If the cgroup empty notification comes when the unit is not active, we must have failed to clean
- * up the cgroup earlier and should do it now. */
- if (IN_SET(s->state, SCOPE_DEAD, SCOPE_FAILED))
- unit_prune_cgroup(u);
}
static void scope_notify_cgroup_oom_event(Unit *u, bool managed_oom) {
/* If the cgroup empty notification comes when the unit is not active, we must have failed to clean
* up the cgroup earlier and should do it now. */
- case SERVICE_DEAD:
- case SERVICE_FAILED:
- case SERVICE_DEAD_BEFORE_AUTO_RESTART:
- case SERVICE_FAILED_BEFORE_AUTO_RESTART:
case SERVICE_AUTO_RESTART:
- case SERVICE_DEAD_RESOURCES_PINNED:
unit_prune_cgroup(u);
break;