mirror of
https://github.com/systemd/systemd.git
synced 2024-11-05 15:21:37 +03:00
core: fix re-realization of cgroup siblings
This is a fix-up for eef85c4a3f
which
broke this.
Tracked down by @w-simon
Fixes: #14453
This commit is contained in:
parent
8ac7339648
commit
65f6b6bdcb
@ -2334,29 +2334,25 @@ unsigned manager_dispatch_cgroup_realize_queue(Manager *m) {
|
|||||||
static void unit_add_siblings_to_cgroup_realize_queue(Unit *u) {
|
static void unit_add_siblings_to_cgroup_realize_queue(Unit *u) {
|
||||||
Unit *slice;
|
Unit *slice;
|
||||||
|
|
||||||
/* This adds the siblings of the specified unit and the
|
/* This adds the siblings of the specified unit and the siblings of all parent units to the cgroup
|
||||||
* siblings of all parent units to the cgroup queue. (But
|
* queue. (But neither the specified unit itself nor the parents.) */
|
||||||
* neither the specified unit itself nor the parents.) */
|
|
||||||
|
|
||||||
while ((slice = UNIT_DEREF(u->slice))) {
|
while ((slice = UNIT_DEREF(u->slice))) {
|
||||||
Iterator i;
|
Iterator i;
|
||||||
Unit *m;
|
Unit *m;
|
||||||
void *v;
|
void *v;
|
||||||
|
|
||||||
HASHMAP_FOREACH_KEY(v, m, u->dependencies[UNIT_BEFORE], i) {
|
HASHMAP_FOREACH_KEY(v, m, slice->dependencies[UNIT_BEFORE], i) {
|
||||||
/* Skip units that have a dependency on the slice
|
/* Skip units that have a dependency on the slice but aren't actually in it. */
|
||||||
* but aren't actually in it. */
|
|
||||||
if (UNIT_DEREF(m->slice) != slice)
|
if (UNIT_DEREF(m->slice) != slice)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
/* No point in doing cgroup application for units
|
/* No point in doing cgroup application for units without active processes. */
|
||||||
* without active processes. */
|
|
||||||
if (UNIT_IS_INACTIVE_OR_FAILED(unit_active_state(m)))
|
if (UNIT_IS_INACTIVE_OR_FAILED(unit_active_state(m)))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
/* If the unit doesn't need any new controllers
|
/* If the unit doesn't need any new controllers and has current ones realized, it
|
||||||
* and has current ones realized, it doesn't need
|
* doesn't need any changes. */
|
||||||
* any changes. */
|
|
||||||
if (unit_has_mask_realized(m,
|
if (unit_has_mask_realized(m,
|
||||||
unit_get_target_mask(m),
|
unit_get_target_mask(m),
|
||||||
unit_get_enable_mask(m)))
|
unit_get_enable_mask(m)))
|
||||||
|
Loading…
Reference in New Issue
Block a user