On Fri, Sep 10, 2021 at 01:40:51PM +0200, mwilck@xxxxxxxx wrote: > From: Martin Wilck <mwilck@xxxxxxxx> > > After sending "RELOADING=1" to systemd, a service must send > "READY=1" before "STOPPING=1". Otherwise systemd will be confused > and will not regard the service as stopped. Subsequent attempts > to start multipathd via socket activation fail until systemd times > out the reload operation. > > The problem can be reproduced by running "multipathd shutdown" > quickly after "multipathd reconfigure". > Reviewed-by: Benjamin Marzinski <bmarzins@xxxxxxxxxx> > Signed-off-by: Martin Wilck <mwilck@xxxxxxxx> > --- > multipathd/main.c | 7 +++++-- > 1 file changed, 5 insertions(+), 2 deletions(-) > > diff --git a/multipathd/main.c b/multipathd/main.c > index 3aff241..67160b9 100644 > --- a/multipathd/main.c > +++ b/multipathd/main.c > @@ -210,9 +210,12 @@ static void do_sd_notify(enum daemon_status old_state, > if (msg && !safe_sprintf(notify_msg, "STATUS=%s", msg)) > sd_notify(0, notify_msg); > > - if (new_state == DAEMON_SHUTDOWN) > + if (new_state == DAEMON_SHUTDOWN) { > + /* Tell systemd that we're not RELOADING any more */ > + if (old_state == DAEMON_CONFIGURE && startup_done) > + sd_notify(0, "READY=1"); > sd_notify(0, "STOPPING=1"); > - else if (new_state == DAEMON_IDLE && old_state == DAEMON_CONFIGURE) { > + } else if (new_state == DAEMON_IDLE && old_state == DAEMON_CONFIGURE) { > sd_notify(0, "READY=1"); > startup_done = true; > } else if (new_state == DAEMON_CONFIGURE && startup_done) > -- > 2.33.0 -- dm-devel mailing list dm-devel@xxxxxxxxxx https://listman.redhat.com/mailman/listinfo/dm-devel