core/unit: introduce unit_set_freezer_state, make logging consistent
Also, emit PropertiesChanged signal for FreezerState too. Fixes #31115
This commit is contained in:
+2
-6
@@ -5156,19 +5156,15 @@ int unit_cgroup_freezer_action(Unit *u, FreezerAction action) {
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
log_unit_debug(u, "Unit freezer state was %s, now %s.",
|
||||
freezer_state_to_string(u->freezer_state),
|
||||
freezer_state_to_string(next));
|
||||
|
||||
r = write_string_file(path, one_zero(objective == FREEZER_FROZEN), WRITE_STRING_FILE_DISABLE_BUFFER);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
u->freezer_state = next;
|
||||
unit_set_freezer_state(u, next);
|
||||
return 1; /* Wait for cgroup event before replying */
|
||||
|
||||
skip:
|
||||
u->freezer_state = freezer_state_finish(next);
|
||||
unit_set_freezer_state(u, freezer_state_finish(next));
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -6251,6 +6251,22 @@ bool unit_can_freeze(const Unit *u) {
|
||||
return UNIT_VTABLE(u)->freezer_action;
|
||||
}
|
||||
|
||||
void unit_set_freezer_state(Unit *u, FreezerState state) {
|
||||
assert(u);
|
||||
assert(state >= 0);
|
||||
assert(state < _FREEZER_STATE_MAX);
|
||||
|
||||
if (u->freezer_state == state)
|
||||
return;
|
||||
|
||||
log_unit_debug(u, "Freezer state changed %s -> %s",
|
||||
freezer_state_to_string(u->freezer_state), freezer_state_to_string(state));
|
||||
|
||||
u->freezer_state = state;
|
||||
|
||||
unit_add_to_dbus_queue(u);
|
||||
}
|
||||
|
||||
void unit_frozen(Unit *u) {
|
||||
assert(u);
|
||||
|
||||
|
||||
@@ -1039,6 +1039,7 @@ bool unit_can_isolate_refuse_manual(Unit *u);
|
||||
bool unit_can_freeze(const Unit *u);
|
||||
int unit_freezer_action(Unit *u, FreezerAction action);
|
||||
void unit_next_freezer_state(Unit *u, FreezerAction action, FreezerState *ret_next, FreezerState *ret_objective);
|
||||
void unit_set_freezer_state(Unit *u, FreezerState state);
|
||||
void unit_frozen(Unit *u);
|
||||
void unit_thawed(Unit *u);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user