Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 18 Dec 2013 00:00:40 +0200
From:      Andriy Gapon <avg@FreeBSD.org>
To:        Maksim Yevmenkin <maksim.yevmenkin@gmail.com>, "current@freebsd.org" <current@FreeBSD.org>
Subject:   Re: [rfc] [patch] do not stop watchdog on shutdown
Message-ID:  <52B0C988.5010507@FreeBSD.org>
In-Reply-To: <CAFPOs6oyAs%2BDvcrNM8GnWNrzEVpkkNBTrHWzb-OSO90MefnB9Q@mail.gmail.com>
References:  <CAFPOs6oyAs%2BDvcrNM8GnWNrzEVpkkNBTrHWzb-OSO90MefnB9Q@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
on 17/12/2013 20:53 Maksim Yevmenkin said the following:
> hello,
> 
> would anyone object to this patch?
> 
> max
> 
> Index: src/etc/rc.d/watchdogd
> ===================================================================
> --- src/etc/rc.d/watchdogd      (revision 2999)
> +++ src/etc/rc.d/watchdogd      (working copy)
> @@ -39,4 +39,7 @@
>  pidfile="/var/run/${name}.pid"
> 
>  load_rc_config $name
> +
> +sig_stop="${watchdogd_sig_stop:-TERM}"
> +
>  run_rc_command "$1"

I wonder if anyone could object to this rather generic (and NOP by default) change.
I see your intent, but a few words about it would not hurt :-)

BTW, for a while now we have some support for interacting with the watchdog(9)
from within the kernel.  I have the following local patch / hack that makes use
of that support:

commit b64c5e855420f2d905a04f69fad5de116e8ffae5
Author: Andriy Gapon <avg@icyb.net.ua>
Date:   Fri Nov 25 10:00:59 2011 +0200

    [test] arm the watchdog before going into the final shutdown/reboot step

    ... to preclude hanging on that step.
    Note: halt assumes the limbo, so no watchdog for that case.

diff --git a/sys/kern/kern_shutdown.c b/sys/kern/kern_shutdown.c
index eaa78b8e..88afaa9 100644
--- a/sys/kern/kern_shutdown.c
+++ b/sys/kern/kern_shutdown.c
@@ -444,6 +444,11 @@ kern_reboot(int howto)
 	if ((howto & (RB_HALT|RB_DUMP)) == RB_DUMP && !cold && !dumping)
 		doadump(TRUE);

+	if ((howto & RB_HALT) != 0)
+		wdog_kern_pat(0);
+	else
+		wdog_kern_pat(WD_TO_32SEC + 1);
+
 	/* Now that we're going to really halt the system... */
 	EVENTHANDLER_INVOKE(shutdown_final, howto);


Admittedly, there is a gap between userland watchdog being stopped and kernel
watchdog taking over.  I wish that we had 'proper' integration between them,
with proper hand-off, etc.

-- 
Andriy Gapon



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?52B0C988.5010507>