]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
core/unit: introduce unit_set_freezer_state, make logging consistent
authorMike Yuan <me@yhndnzj.com>
Fri, 31 May 2024 12:46:16 +0000 (20:46 +0800)
committerMike Yuan <me@yhndnzj.com>
Wed, 17 Jul 2024 16:14:32 +0000 (18:14 +0200)
Also, emit PropertiesChanged signal for FreezerState too.

Fixes #31115

src/core/cgroup.c
src/core/unit.c
src/core/unit.h

index a8bdd0dd0d3e71497e40746ceac176cf2a810000..98f33fe580e4341cfee884fa34fd7833a97ad437 100644 (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;
 }
 
index 999e690a329dd68cd316197ca39266665adfb6cc..01f2ca189cba5d149018de23a1ce0b3f8b3d1cce 100644 (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);
 
index 9c8dbcf12a0a7dc4c211ac3f821f226a87649197..2003b6a7793066ac730b99e9b1047fc8e05a4af4 100644 (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);