diff options
author | Mike Yuan <me@yhndnzj.com> | 2024-03-26 10:40:01 +0100 |
---|---|---|
committer | Luca Boccassi <luca.boccassi@gmail.com> | 2024-03-26 13:52:33 +0100 |
commit | b377a7cce99ac7aa35061e694550512a16e17cf8 (patch) | |
tree | 7e82a61864d6f9a36bb0e2d0ed7bd0ef57121d74 /src | |
parent | Merge pull request #29721 from poettering/systemd-project (diff) | |
download | systemd-b377a7cce99ac7aa35061e694550512a16e17cf8.tar.xz systemd-b377a7cce99ac7aa35061e694550512a16e17cf8.zip |
daemon-util: introduce notify_reloading helper
Prompted by #31951
Diffstat (limited to 'src')
-rw-r--r-- | src/core/manager.c | 5 | ||||
-rw-r--r-- | src/login/logind.c | 5 | ||||
-rw-r--r-- | src/network/networkd-manager.c | 5 | ||||
-rw-r--r-- | src/shared/daemon-util.c | 16 | ||||
-rw-r--r-- | src/shared/daemon-util.h | 7 | ||||
-rw-r--r-- | src/udev/udev-manager.c | 10 |
6 files changed, 28 insertions, 20 deletions
diff --git a/src/core/manager.c b/src/core/manager.c index 7eeb7f3a26..b2d8457790 100644 --- a/src/core/manager.c +++ b/src/core/manager.c @@ -37,6 +37,7 @@ #include "constants.h" #include "core-varlink.h" #include "creds-util.h" +#include "daemon-util.h" #include "dbus-job.h" #include "dbus-manager.h" #include "dbus-unit.h" @@ -3879,9 +3880,7 @@ void manager_send_reloading(Manager *m) { assert(m); /* Let whoever invoked us know that we are now reloading */ - (void) sd_notifyf(/* unset_environment= */ false, - "RELOADING=1\n" - "MONOTONIC_USEC=" USEC_FMT "\n", now(CLOCK_MONOTONIC)); + (void) notify_reloading_full(/* status = */ NULL); /* And ensure that we'll send READY=1 again as soon as we are ready again */ m->ready_sent = false; diff --git a/src/login/logind.c b/src/login/logind.c index 415d63da1f..4d3d0270ef 100644 --- a/src/login/logind.c +++ b/src/login/logind.c @@ -1068,10 +1068,7 @@ static int manager_dispatch_reload_signal(sd_event_source *s, const struct signa Manager *m = userdata; int r; - (void) sd_notifyf(/* unset= */ false, - "RELOADING=1\n" - "STATUS=Reloading configuration...\n" - "MONOTONIC_USEC=" USEC_FMT, now(CLOCK_MONOTONIC)); + (void) notify_reloading(); manager_reset_config(m); r = manager_parse_config_file(m); diff --git a/src/network/networkd-manager.c b/src/network/networkd-manager.c index 5c50b3c98a..15f5e8a6cc 100644 --- a/src/network/networkd-manager.c +++ b/src/network/networkd-manager.c @@ -1120,10 +1120,7 @@ int manager_reload(Manager *m, sd_bus_message *message) { assert(m); - (void) sd_notifyf(/* unset= */ false, - "RELOADING=1\n" - "STATUS=Reloading configuration...\n" - "MONOTONIC_USEC=" USEC_FMT, now(CLOCK_MONOTONIC)); + (void) notify_reloading(); r = netdev_load(m, /* reload= */ true); if (r < 0) diff --git a/src/shared/daemon-util.c b/src/shared/daemon-util.c index 32180a14bb..aa386b4202 100644 --- a/src/shared/daemon-util.c +++ b/src/shared/daemon-util.c @@ -4,6 +4,7 @@ #include "fd-util.h" #include "log.h" #include "string-util.h" +#include "time-util.h" static int notify_remove_fd_warn(const char *name) { int r; @@ -74,3 +75,18 @@ int notify_push_fdf(int fd, const char *format, ...) { return notify_push_fd(fd, name); } + +int notify_reloading_full(const char *status) { + int r; + + r = sd_notifyf(/* unset_environment = */ false, + "RELOADING=1\n" + "MONOTONIC_USEC=" USEC_FMT + "%s%s", + now(CLOCK_MONOTONIC), + status ? "\nSTATUS=" : "", strempty(status)); + if (r < 0) + return log_debug_errno(r, "Failed to notify service manager for reloading status: %m"); + + return 0; +} diff --git a/src/shared/daemon-util.h b/src/shared/daemon-util.h index 711885bba4..cbefa8dd8f 100644 --- a/src/shared/daemon-util.h +++ b/src/shared/daemon-util.h @@ -10,7 +10,7 @@ #define NOTIFY_READY "READY=1\n" "STATUS=Processing requests..." #define NOTIFY_STOPPING "STOPPING=1\n" "STATUS=Shutting down..." -static inline const char *notify_start(const char *start, const char *stop) { +static inline const char* notify_start(const char *start, const char *stop) { if (start) (void) sd_notify(false, start); @@ -26,3 +26,8 @@ static inline void notify_on_cleanup(const char **p) { int notify_remove_fd_warnf(const char *format, ...) _printf_(1, 2); int close_and_notify_warn(int fd, const char *name); int notify_push_fdf(int fd, const char *format, ...) _printf_(2, 3); + +int notify_reloading_full(const char *status); +static inline int notify_reloading(void) { + return notify_reloading_full("Reloading configuration..."); +} diff --git a/src/udev/udev-manager.c b/src/udev/udev-manager.c index 0b6cfb1655..1f8d8e4950 100644 --- a/src/udev/udev-manager.c +++ b/src/udev/udev-manager.c @@ -274,15 +274,9 @@ static void manager_reload(Manager *manager, bool force) { return; /* If we eat this up, then tell our service manager to just continue */ - (void) sd_notifyf(/* unset= */ false, - "RELOADING=1\n" - "STATUS=Skipping configuration reloading, nothing changed.\n" - "MONOTONIC_USEC=" USEC_FMT, now(CLOCK_MONOTONIC)); + (void) notify_reloading_full("Skipping configuration reloading, nothing changed."); } else { - (void) sd_notifyf(/* unset= */ false, - "RELOADING=1\n" - "STATUS=Flushing configuration...\n" - "MONOTONIC_USEC=" USEC_FMT, now(CLOCK_MONOTONIC)); + (void) notify_reloading(); manager_kill_workers(manager, false); |