Re: [PATCH 06/35] multipathd: fix systemd notification when stopping while reloading

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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




[Index of Archives]     [DM Crypt]     [Fedora Desktop]     [ATA RAID]     [Fedora Marketing]     [Fedora Packaging]     [Fedora SELinux]     [Yosemite Discussion]     [KDE Users]     [Fedora Docs]

  Powered by Linux