From 1b272d778a5e8a0ba30f422da4b2939912ef47f9 Mon Sep 17 00:00:00 2001 From: Mike Yuan Date: Sun, 19 Oct 2025 20:27:42 +0200 Subject: [PATCH] core/service: introduce SERVICE_STATE_WITH_WATCHDOG --- src/core/service.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/core/service.c b/src/core/service.c index 6b72d48ccd1..df89534a452 100644 --- a/src/core/service.c +++ b/src/core/service.c @@ -151,6 +151,14 @@ static bool SERVICE_STATE_WITH_CONTROL_PROCESS(ServiceState state) { SERVICE_CLEANING); } +static bool SERVICE_STATE_WITH_WATCHDOG(ServiceState state) { + return IN_SET(state, + SERVICE_START_POST, + SERVICE_RUNNING, + SERVICE_REFRESH_EXTENSIONS, SERVICE_RELOAD, SERVICE_RELOAD_SIGNAL, SERVICE_RELOAD_NOTIFY, + SERVICE_MOUNTING); +} + static void service_init(Unit *u) { Service *s = SERVICE(u); @@ -1319,7 +1327,7 @@ static void service_set_state(Service *s, ServiceState state) { if (state != SERVICE_START) s->exec_fd_event_source = sd_event_source_disable_unref(s->exec_fd_event_source); - if (!IN_SET(state, SERVICE_START_POST, SERVICE_RUNNING, SERVICE_RELOAD, SERVICE_RELOAD_SIGNAL, SERVICE_RELOAD_NOTIFY, SERVICE_REFRESH_EXTENSIONS, SERVICE_MOUNTING)) + if (!SERVICE_STATE_WITH_WATCHDOG(state)) service_stop_watchdog(s); if (state != SERVICE_MOUNTING) /* Just in case */ @@ -1431,7 +1439,7 @@ static int service_coldplug(Unit *u) { SERVICE_DEAD_RESOURCES_PINNED)) (void) unit_setup_exec_runtime(u); - if (IN_SET(s->deserialized_state, SERVICE_START_POST, SERVICE_RUNNING, SERVICE_RELOAD, SERVICE_RELOAD_SIGNAL, SERVICE_RELOAD_NOTIFY, SERVICE_REFRESH_EXTENSIONS, SERVICE_MOUNTING) && + if (SERVICE_STATE_WITH_WATCHDOG(s->deserialized_state) && freezer_state_objective(u->freezer_state) == FREEZER_RUNNING) service_start_watchdog(s); -- 2.47.3