We want thawing operations to still succeed even in the presence of an
unfreezable unit type (e.g. mount) appearing under a slice after the
slice was frozen. The appearance of such units should never cause the
slice thawing operation to fail to prevent potential future repeats of
https://github.com/systemd/systemd/issues/25356.
assert(s);
assert(IN_SET(action, FREEZER_FREEZE, FREEZER_THAW));
- if (!slice_freezer_action_supported_by_children(s)) {
+ if (action == FREEZER_FREEZE && !slice_freezer_action_supported_by_children(s)) {
log_unit_warning(s, "Requested freezer operation is not supported by all children of the slice");
return 0;
}
if (action == FREEZER_FREEZE)
r = UNIT_VTABLE(member)->freeze(member);
- else
+ else if (UNIT_VTABLE(member)->thaw)
r = UNIT_VTABLE(member)->thaw(member);
+ else
+ /* Thawing is requested but no corresponding method is available, ignore. */
+ r = 0;
if (r < 0)
return r;
}