mirror of
https://github.com/systemd/systemd-stable.git
synced 2024-10-27 18:55:09 +03:00
unit: trim cgroups when going down
This commit is contained in:
parent
582a507f1a
commit
fb38518151
14
src/cgroup.c
14
src/cgroup.c
@ -101,6 +101,20 @@ void cgroup_bonding_free_list(CGroupBonding *first) {
|
||||
cgroup_bonding_free(b);
|
||||
}
|
||||
|
||||
void cgroup_bonding_trim(CGroupBonding *b, bool delete_root) {
|
||||
assert(b);
|
||||
|
||||
if (b->realized && b->only_us && b->clean_up)
|
||||
cg_trim(b->controller, b->path, delete_root);
|
||||
}
|
||||
|
||||
void cgroup_bonding_trim_list(CGroupBonding *first, bool delete_root) {
|
||||
CGroupBonding *b;
|
||||
|
||||
LIST_FOREACH(by_unit, b, first)
|
||||
cgroup_bonding_trim(b, delete_root);
|
||||
}
|
||||
|
||||
int cgroup_bonding_install(CGroupBonding *b, pid_t pid) {
|
||||
int r;
|
||||
|
||||
|
@ -61,6 +61,9 @@ int cgroup_bonding_install_list(CGroupBonding *first, pid_t pid);
|
||||
int cgroup_bonding_kill(CGroupBonding *b, int sig);
|
||||
int cgroup_bonding_kill_list(CGroupBonding *first, int sig);
|
||||
|
||||
void cgroup_bonding_trim(CGroupBonding *first, bool delete_root);
|
||||
void cgroup_bonding_trim_list(CGroupBonding *first, bool delete_root);
|
||||
|
||||
int cgroup_bonding_is_empty(CGroupBonding *b);
|
||||
int cgroup_bonding_is_empty_list(CGroupBonding *first);
|
||||
|
||||
|
@ -973,6 +973,9 @@ void unit_notify(Unit *u, UnitActiveState os, UnitActiveState ns) {
|
||||
if (ns != os && ns == UNIT_MAINTENANCE)
|
||||
log_notice("Unit %s entered maintenance state.", u->meta.id);
|
||||
|
||||
if (UNIT_IS_INACTIVE_OR_MAINTENANCE(ns))
|
||||
cgroup_bonding_trim_list(u->meta.cgroup_bondings, true);
|
||||
|
||||
timer_unit_notify(u, ns);
|
||||
path_unit_notify(u, ns);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user