summaryrefslogtreecommitdiffstats
path: root/etc
diff options
context:
space:
mode:
authorjamie <jamie@FreeBSD.org>2016-04-30 15:06:18 +0000
committerjamie <jamie@FreeBSD.org>2016-04-30 15:06:18 +0000
commitf235f50008dbef6203dc032d7f3ddf77cb7a2024 (patch)
tree9c9882419593294a269f950e9f72840f20630b95 /etc
parent8ed4b37d5a75437cbb57735058a357a32958853e (diff)
downloadFreeBSD-src-f235f50008dbef6203dc032d7f3ddf77cb7a2024.zip
FreeBSD-src-f235f50008dbef6203dc032d7f3ddf77cb7a2024.tar.gz
MFC r295471:
Add new rc.conf parameter "jail_reverse_stop" When a user defines "jail_list" in rc.conf the jails are started in the order defined. Currently the jails are not are stopped in reverse order which may break dependencies between jails/services and prevent a clean shutdown. The new parameter "jail_reverse_stop" will shutdown jails in "jail_list" in reverse order when set to "YES". Please note that this does not affect manual invocation of the jail rc script. If a user runs the command # service jail stop jail1 jail2 jail3 the jails will be stopped in exactly the order specified regardless of jail_reverse_stop being defined in rc.conf. MFC r295568: Document the new jail_reverse_stop parameter While here clean up the documentation for jail_list PR: 196152 Submitted by: feld
Diffstat (limited to 'etc')
-rw-r--r--etc/defaults/rc.conf1
-rwxr-xr-xetc/rc.d/jail10
2 files changed, 9 insertions, 2 deletions
diff --git a/etc/defaults/rc.conf b/etc/defaults/rc.conf
index ddaf657..cafdd2e 100644
--- a/etc/defaults/rc.conf
+++ b/etc/defaults/rc.conf
@@ -700,6 +700,7 @@ rctl_rules="/etc/rctl.conf" # rctl(8) ruleset. See rctl.conf(5).
jail_enable="NO" # Set to NO to disable starting of any jails
jail_parallel_start="NO" # Start jails in the background
jail_list="" # Space separated list of names of jails
+jail_reverse_stop="NO" # Stop jails in reverse order
##############################################################
### Define source_rc_confs, the mechanism used by /etc/rc.* ##
diff --git a/etc/rc.d/jail b/etc/rc.d/jail
index b2fd452..f8fd4aa 100755
--- a/etc/rc.d/jail
+++ b/etc/rc.d/jail
@@ -517,7 +517,11 @@ jail_stop()
command=$jail_program
rc_flags=$jail_flags
command_args="-f $jail_conf -r"
- $jail_jls name | while read _j; do
+ if checkyesno jail_reverse_stop; then
+ $jail_jls name | tail -r
+ else
+ $jail_jls name
+ fi | while read _j; do
echo -n " $_j"
_tmp=`mktemp -t jail` || exit 3
$command $rc_flags $command_args $_j >> $_tmp 2>&1
@@ -532,6 +536,7 @@ jail_stop()
return
;;
esac
+ checkyesno jail_reverse_stop && set -- $(reverse_list $@)
for _j in $@; do
_j=$(echo $_j | tr /. _)
_jv=$(echo -n $_j | tr -c '[:alnum:]' _)
@@ -567,5 +572,6 @@ jail_warn()
load_rc_config $name
case $# in
1) run_rc_command $@ ${jail_list:-_ALL} ;;
-*) run_rc_command $@ ;;
+*) jail_reverse_stop="no"
+ run_rc_command $@ ;;
esac
OpenPOWER on IntegriCloud