mirror of
https://github.com/systemd/systemd-stable.git
synced 2024-12-22 13:33:56 +03:00
pid1: make sure we send our calling service manager RELOADING=1 when reloading
And send READY=1 again when we are done with it. We do this not only for "daemon-reload" but also for "daemon-reexec" and "switch-root", since from the perspective of an encapsulating service manager these three operations are not that different.
This commit is contained in:
parent
81e19b6f65
commit
dd0ab174c3
@ -1961,6 +1961,8 @@ static int invoke_main_loop(
|
||||
LogTarget saved_log_target;
|
||||
int saved_log_level;
|
||||
|
||||
manager_send_reloading(m);
|
||||
|
||||
log_info("Reloading.");
|
||||
|
||||
/* First, save any overridden log level/target, then parse the configuration file,
|
||||
@ -1991,6 +1993,10 @@ static int invoke_main_loop(
|
||||
}
|
||||
|
||||
case MANAGER_REEXECUTE:
|
||||
|
||||
manager_send_reloading(m); /* From the perspective of the manager calling us this is
|
||||
* pretty much the same as a reload */
|
||||
|
||||
r = prepare_reexecute(m, &arg_serialization, ret_fds, false);
|
||||
if (r < 0) {
|
||||
*ret_error_message = "Failed to prepare for reexecution";
|
||||
@ -2005,6 +2011,10 @@ static int invoke_main_loop(
|
||||
return objective;
|
||||
|
||||
case MANAGER_SWITCH_ROOT:
|
||||
|
||||
manager_send_reloading(m); /* From the perspective of the manager calling us this is
|
||||
* pretty much the same as a reload */
|
||||
|
||||
manager_set_switching_root(m, true);
|
||||
|
||||
if (!m->switch_root_init) {
|
||||
|
@ -3648,6 +3648,18 @@ void manager_check_finished(Manager *m) {
|
||||
manager_invalidate_startup_units(m);
|
||||
}
|
||||
|
||||
void manager_send_reloading(Manager *m) {
|
||||
assert(m);
|
||||
|
||||
/* Let whoever invoked us know that we are now reloading */
|
||||
(void) sd_notifyf(/* unset= */ false,
|
||||
"RELOADING=1\n"
|
||||
"MONOTONIC_USEC=" USEC_FMT "\n", now(CLOCK_MONOTONIC));
|
||||
|
||||
/* And ensure that we'll send READY=1 again as soon as we are ready again */
|
||||
m->ready_sent = false;
|
||||
}
|
||||
|
||||
static bool generator_path_any(const char* const* paths) {
|
||||
bool found = false;
|
||||
|
||||
|
@ -538,6 +538,7 @@ void manager_send_unit_plymouth(Manager *m, Unit *u);
|
||||
bool manager_unit_inactive_or_pending(Manager *m, const char *name);
|
||||
|
||||
void manager_check_finished(Manager *m);
|
||||
void manager_send_reloading(Manager *m);
|
||||
|
||||
void disable_printk_ratelimit(void);
|
||||
void manager_recheck_dbus(Manager *m);
|
||||
|
@ -17,7 +17,7 @@ IgnoreOnIsolate=yes
|
||||
[Service]
|
||||
User=%i
|
||||
PAMName=systemd-user
|
||||
Type=notify
|
||||
Type=notify-reload
|
||||
ExecStart={{ROOTLIBEXECDIR}}/systemd --user
|
||||
Slice=user-%i.slice
|
||||
KillMode=mixed
|
||||
|
Loading…
Reference in New Issue
Block a user