svn commit: r204759 - in head: etc/defaults etc/rc.d share/man/man5
Alexander Leidinger
netchild at FreeBSD.org
Fri Mar 5 14:34:33 UTC 2010
Author: netchild
Date: Fri Mar 5 14:34:33 2010
New Revision: 204759
URL: http://svn.freebsd.org/changeset/base/204759
Log:
Redirect stdin from /dev/null when starting a jail:
At least in RELENG_7 this fixes some start problems for some programs
from the ports. It is also more correct, as a jail shall not expect
input (interactivity) from the jail-host.
Revert the current behavior of starting jails in the background and
make it optional only for the start of jails (jail_parallell_start=YES
in rc.conf):
- The stop can not be done in the background, the system needs to wait
until everything is stopped correctly before it can reboot or power
down.
- The start should not be done in parallel by default, this not only
breaks POLA for people comming from RELENG_x, it may also break a
dependency chain with other scripts in the jail-host, which need to
do some stuff after the jails are up and running (e.g. hardlinking
a mysql socket from one jail into another one).
Discussed on: freebsd-jails@
Modified:
head/etc/defaults/rc.conf
head/etc/rc.d/jail
head/share/man/man5/rc.conf.5
Modified: head/etc/defaults/rc.conf
==============================================================================
--- head/etc/defaults/rc.conf Fri Mar 5 14:13:58 2010 (r204758)
+++ head/etc/defaults/rc.conf Fri Mar 5 14:34:33 2010 (r204759)
@@ -637,6 +637,7 @@ mixer_enable="YES" # Run the sound mixer
### Jail Configuration #######################################
##############################################################
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_set_hostname_allow="YES" # Allow root user in a jail to change its hostname
jail_socket_unixiproute_only="YES" # Route only TCP/IP within a jail
Modified: head/etc/rc.d/jail
==============================================================================
--- head/etc/rc.d/jail Fri Mar 5 14:13:58 2010 (r204758)
+++ head/etc/rc.d/jail Fri Mar 5 14:34:33 2010 (r204759)
@@ -636,7 +636,8 @@ jail_start()
done
eval ${_setfib} jail ${_flags} -i ${_rootdir} ${_hostname} \
- \"${_addrl}\" ${_exec_start} > ${_tmp_jail} 2>&1
+ \"${_addrl}\" ${_exec_start} > ${_tmp_jail} 2>&1 \
+ </dev/null
if [ "$?" -eq 0 ] ; then
_jail_id=$(head -1 ${_tmp_jail})
@@ -728,4 +729,19 @@ fi
if [ -n "$*" ]; then
jail_list="$*"
fi
-run_rc_command "${cmd}" &
+
+# Only allow the parallel start of jails, other commands are not
+# safe to execute in parallel.
+case "${cmd}" in
+*start)
+ ;;
+*)
+ jail_parallel_start=NO
+esac
+
+if checkyesno jail_parallel_start; then
+ run_rc_command "${cmd}" &
+else
+ run_rc_command "${cmd}"
+fi
+
Modified: head/share/man/man5/rc.conf.5
==============================================================================
--- head/share/man/man5/rc.conf.5 Fri Mar 5 14:13:58 2010 (r204758)
+++ head/share/man/man5/rc.conf.5 Fri Mar 5 14:34:33 2010 (r204759)
@@ -24,7 +24,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd February 12, 2010
+.Dd March 05, 2010
.Dt RC.CONF 5
.Os
.Sh NAME
@@ -3497,6 +3497,11 @@ indicates that the highest frequency (le
If set to
.Dq Li NO ,
any configured jails will not be started.
+.It jail_parallel_start
+.Pq Vt bool
+If set to
+.Dq Li YES
+all configured jails will be started in the background (= in parallel).
.It Va jail_list
.Pq Vt str
A space separated list of names for jails.
More information about the svn-src-all
mailing list