Page MenuHomeFreeBSD

D21221.diff
No OneTemporary

D21221.diff

Index: head/libexec/rc/rc.conf
===================================================================
--- head/libexec/rc/rc.conf
+++ head/libexec/rc/rc.conf
@@ -679,6 +679,10 @@
dmesg_enable="YES" # Save dmesg(8) to /var/run/dmesg.boot
watchdogd_enable="NO" # Start the software watchdog daemon
watchdogd_flags="" # Flags to watchdogd (if enabled)
+watchdogd_timeout="" # watchdogd timeout, overrides -t in watchdogd_flags
+watchdogd_shutdown_timeout="" # Timeout to use after watchdogd is stopped.
+ # Has effect only for system shutdown.
+ # Overrides -x in watchdogd_flags.
devfs_rulesets="/etc/defaults/devfs.rules /etc/devfs.rules" # Files containing
# devfs(8) rules.
devfs_system_ruleset="" # The name (NOT number) of a ruleset to apply to /dev
Index: head/libexec/rc/rc.d/jail
===================================================================
--- head/libexec/rc/rc.d/jail
+++ head/libexec/rc/rc.d/jail
@@ -168,7 +168,7 @@
if [ -z "${_exec_start}" ]; then
_exec_start="/bin/sh /etc/rc"
if [ -z "${_exec_stop}" ]; then
- _exec_stop="/bin/sh /etc/rc.shutdown"
+ _exec_stop="/bin/sh /etc/rc.shutdown jail"
fi
fi
fi
Index: head/libexec/rc/rc.d/watchdogd
===================================================================
--- head/libexec/rc/rc.d/watchdogd
+++ head/libexec/rc/rc.d/watchdogd
@@ -38,9 +38,55 @@
rcvar="watchdogd_enable"
command="/usr/sbin/${name}"
pidfile="/var/run/${name}.pid"
+start_precmd="watchdogd_prestart"
+stop_precmd="watchdogd_prestop"
+stop_postcmd="watchdogd_poststop"
+watchdog_command="/usr/sbin/watchdog"
-load_rc_config $name
+watchdogd_prestart()
+{
+ if [ -n "${watchdogd_timeout}" ] ; then
+ rc_flags="${rc_flags} -t ${watchdogd_timeout}"
+ fi
+ if [ -n "$watchdogd_shutdown_timeout" ] ; then
+ rc_flags="${rc_flags} -x ${watchdogd_shutdown_timeout}"
+ fi
+ return 0
+}
-sig_stop="${watchdogd_sig_stop:-TERM}"
+watchdogd_prestop()
+{
+ sig_stop="${watchdogd_sig_stop:-TERM}"
+}
+watchdogd_poststop()
+{
+ if [ ${watchdogd_shutdown_timeout:-0} -gt 0 ] ; then
+ case "${rc_shutdown}" in
+ "reboot")
+ info "watchdog timer is set to" \
+ ${watchdogd_shutdown_timeout} "before shutdown"
+ return 0
+ ;;
+ "single")
+ info "watchdog timer is disabled before going to" \
+ "single user mode"
+ ${watchdog_command} -t 0
+ ;;
+ "")
+ info "watchdog timer is disabled after administrative" \
+ "${name} stop"
+ ${watchdog_command} -t 0
+ ;;
+ *)
+ warn "unknown shutdown mode '${rc_shutdown}'"
+ warn "watchdog timer is set to ${watchdogd_shutdown_timeout}"
+ return 0
+ ;;
+ esac
+ fi
+ return 0
+}
+
+load_rc_config $name
run_rc_command "$1"
Index: head/libexec/rc/rc.shutdown
===================================================================
--- head/libexec/rc/rc.shutdown
+++ head/libexec/rc/rc.shutdown
@@ -43,6 +43,8 @@
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin
export HOME PATH
+rc_shutdown=${1:-"unspecified"}
+
. /etc/rc.subr
load_rc_config
Index: head/sbin/init/init.8
===================================================================
--- head/sbin/init/init.8
+++ head/sbin/init/init.8
@@ -31,7 +31,7 @@
.\" @(#)init.8 8.3 (Berkeley) 4/18/94
.\" $FreeBSD$
.\"
-.Dd August 15, 2018
+.Dd August 6, 2019
.Dt INIT 8
.Os
.Sh NAME
@@ -269,6 +269,15 @@
.Xr sysctl 8
variable
.Va kern.init_shutdown_timeout .
+.Pp
+.Nm init
+passes
+.Dq Li single
+as the argument to the shutdown script if return to single-user mode
+is requested.
+Otherwise,
+.Dq Li reboot
+argument is used.
.Pp
The role of
.Nm
Index: head/share/examples/jails/jail.xxx.conf
===================================================================
--- head/share/examples/jails/jail.xxx.conf
+++ head/share/examples/jails/jail.xxx.conf
@@ -23,7 +23,7 @@
# Standard recipe
exec.start += "/bin/sh /etc/rc";
- exec.stop = "/bin/sh /etc/rc.shutdown";
+ exec.stop = "/bin/sh /etc/rc.shutdown jail";
exec.consolelog = "/var/log/jail_xxx_console.log";
mount.devfs; # mount devfs
Index: head/share/examples/jails/jib
===================================================================
--- head/share/examples/jails/jib
+++ head/share/examples/jails/jib
@@ -67,7 +67,7 @@
#
# # Standard recipe
# exec.start += "/bin/sh /etc/rc";
-# exec.stop = "/bin/sh /etc/rc.shutdown";
+# exec.stop = "/bin/sh /etc/rc.shutdown jail";
# exec.consolelog = "/var/log/jail_xxx_console.log";
# mount.devfs;
#
Index: head/share/examples/jails/jng
===================================================================
--- head/share/examples/jails/jng
+++ head/share/examples/jails/jng
@@ -67,7 +67,7 @@
#
# # Standard recipe
# exec.start += "/bin/sh /etc/rc";
-# exec.stop = "/bin/sh /etc/rc.shutdown";
+# exec.stop = "/bin/sh /etc/rc.shutdown jail";
# exec.consolelog = "/var/log/jail_xxx_console.log";
# mount.devfs;
#
Index: head/share/man/man5/rc.conf.5
===================================================================
--- head/share/man/man5/rc.conf.5
+++ head/share/man/man5/rc.conf.5
@@ -3738,6 +3738,41 @@
these are the flags passed to the
.Xr watchdogd 8
daemon.
+.It Va watchdogd_timeout
+.Pq Vt int
+If
+.Va watchdogd_enable
+is set to
+.Dq Li YES ,
+this is a timeout that will be used by the
+.Xr watchdogd 8
+daemon.
+If this option is set, it overrides
+.Fl t
+in
+.Va watchdogd_flags .
+.It Va watchdogd_shutdown_timeout
+.Pq Vt int
+If
+.Va watchdogd_enable
+is set to
+.Dq Li YES ,
+this is a timeout that will be set by the
+.Xr watchdogd 8
+daemon when it exits during the system shutdown.
+This timeout will not be set when returning to the single-user mode
+or when the watchdogd service is stopped individually using the
+.Xr service 8
+command or the rc.d script.
+Note that the timeout will be applied if
+.Xr watchdogd 8
+is stopped outside of
+.Xr rc 8
+framework.
+If this option is set, it overrides
+.Fl x
+in
+.Va watchdogd_flags .
.It Va devfs_rulesets
.Pq Vt str
List of files containing sets of rules for
Index: head/share/man/man8/rc.8
===================================================================
--- head/share/man/man8/rc.8
+++ head/share/man/man8/rc.8
@@ -189,6 +189,14 @@
.Ss Operation of Nm rc.shutdown
.Bl -enum
.It
+Set
+.Va rc_shutdown
+to the value of the first argument passed to
+.Nm rc.shutdown
+or to
+.Dq Li unspecified
+if no argument was passed.
+.It
Source
.Pa /etc/rc.subr
to load various
Index: head/usr.sbin/jail/jail.8
===================================================================
--- head/usr.sbin/jail/jail.8
+++ head/usr.sbin/jail/jail.8
@@ -25,7 +25,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd May 18, 2019
+.Dd August 6, 2019
.Dt JAIL 8
.Os
.Sh NAME
@@ -681,7 +681,7 @@
.Dq inherit
will keep the same environment, and
.Dq new
-will give the jail it's own environment (still originally inherited when
+will give the jail its own environment (still originally inherited when
the jail is created).
.It Va linux.osname , linux.osrelease , linux.oss_version
The Linux OS name, OS release, and OSS version associated with this jail.
@@ -754,7 +754,7 @@
.Va exec.prestop
commands have completed.
A typical command to run is
-.Dq sh /etc/rc.shutdown .
+.Dq sh /etc/rc.shutdown jail .
.It Va exec.poststop
Command(s) to run in the system environment after a jail is removed.
.It Va exec.clean
@@ -1103,7 +1103,7 @@
ip4.addr = 192.0.2.100;
interface = em0;
exec.start = "/bin/sh /etc/rc";
- exec.stop = "/bin/sh /etc/rc.shutdown";
+ exec.stop = "/bin/sh /etc/rc.shutdown jail";
}
.Ed
.Pp
Index: head/usr.sbin/jail/jail.conf.5
===================================================================
--- head/usr.sbin/jail/jail.conf.5
+++ head/usr.sbin/jail/jail.conf.5
@@ -24,7 +24,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd February 13, 2014
+.Dd August 6, 2019
.Dt JAIL.CONF 5
.Os
.Sh NAME
@@ -182,7 +182,7 @@
# Typical static defaults:
# Use the rc scripts to start and stop jails. Mount jail's /dev.
exec.start = "/bin/sh /etc/rc";
-exec.stop = "/bin/sh /etc/rc.shutdown";
+exec.stop = "/bin/sh /etc/rc.shutdown jail";
exec.clean;
mount.devfs;

File Metadata

Mime Type
text/plain
Expires
Tue, Jun 16, 2:32 PM (18 h, 28 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
33989868
Default Alt Text
D21221.diff (7 KB)

Event Timeline