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. PR: 196152 Approved by: jamie MFC after: 1 week Relnotes: yes Differential Revision: https://reviews.freebsd.org/D5233
This commit is contained in:
parent
1e2b39a3f2
commit
0ba5cf0e44
@ -694,6 +694,7 @@ iovctl_files="" # Config files for iovctl(8)
|
||||
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.* ##
|
||||
|
@ -521,7 +521,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
|
||||
@ -536,6 +540,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:]' _)
|
||||
@ -571,5 +576,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
|
||||
|
Loading…
Reference in New Issue
Block a user