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