core/unit: introduce unit_set_freezer_state, make logging consistent

Also, emit PropertiesChanged signal for FreezerState too.

Fixes #31115
This commit is contained in:
Mike Yuan
2024-07-17 18:14:32 +02:00
parent a9dc196179
commit 0064290a54
3 changed files with 19 additions and 6 deletions
+2 -6
View File
@@ -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;
}
+16
View File
@@ -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);
+1
View File
@@ -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);