mirror of
https://github.com/systemd/systemd-stable.git
synced 2025-01-06 13:17:44 +03:00
core/cgroup: thaw slice of unit when thawing unit
This ensures starting a new unit under a frozen slice work as expected.
(cherry picked from commit a14137d90e
)
This commit is contained in:
parent
5c1e5944c0
commit
8798badd2c
@ -4166,9 +4166,23 @@ int unit_cgroup_freezer_action(Unit *u, FreezerAction action) {
|
||||
if (!cg_freezer_supported())
|
||||
return 0;
|
||||
|
||||
/* Ignore all requests to thaw init.scope or -.slice and reject all requests to freeze them */
|
||||
if (unit_has_name(u, SPECIAL_ROOT_SLICE) || unit_has_name(u, SPECIAL_INIT_SCOPE))
|
||||
return action == FREEZER_FREEZE ? -EPERM : 0;
|
||||
|
||||
if (!u->cgroup_realized)
|
||||
return -EBUSY;
|
||||
|
||||
if (action == FREEZER_THAW) {
|
||||
Unit *slice = UNIT_GET_SLICE(u);
|
||||
|
||||
if (slice) {
|
||||
r = unit_cgroup_freezer_action(slice, FREEZER_THAW);
|
||||
if (r < 0)
|
||||
return log_unit_error_errno(u, r, "Failed to thaw slice %s of unit: %m", slice->id);
|
||||
}
|
||||
}
|
||||
|
||||
target = action == FREEZER_FREEZE ? FREEZER_FROZEN : FREEZER_RUNNING;
|
||||
|
||||
r = unit_freezer_state_kernel(u, &kernel);
|
||||
|
Loading…
Reference in New Issue
Block a user