]> 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)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Tue, 29 Jul 2025 11:08:03 +0000 (13:08 +0200)
Also, emit PropertiesChanged signal for FreezerState too.

Fixes #31115

(cherry picked from commit 0064290a54fe46047889d44b3215d04b60e77c17)

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

index f6bf8d6e7463f1a17fe2b4074ed1b8b84149d5cb..792d10cd514c07fe5f85a8a96d4f22f67fe020d1 100644 (file)
@@ -5173,19 +5173,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 eb814ac758ad837e4b96a22f73765222aa0fd149..b733b9b6b984a6d189ea69493a09a8196aa24c87 100644 (file)
@@ -6272,6 +6272,22 @@ bool unit_can_freeze(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 a852580098887bba3f25c216550b378ad7e4537d..af16cd8b0193c8d9a64c704d6daed7222386d3b4 100644 (file)
@@ -1041,6 +1041,7 @@ bool unit_can_isolate_refuse_manual(Unit *u);
 bool unit_can_freeze(Unit *u);
 int unit_freezer_action(Unit *u, FreezerAction action);
 void unit_next_freezer_state(Unit *u, FreezerAction a, FreezerState *ret, FreezerState *ret_objective);
+void unit_set_freezer_state(Unit *u, FreezerState state);
 void unit_frozen(Unit *u);
 void unit_thawed(Unit *u);