Index: jail =================================================================== RCS file: /home/ncvs/src/etc/rc.d/jail,v retrieving revision 1.34 diff -u -r1.34 jail --- jail 30 May 2006 16:20:48 -0000 1.34 +++ jail 19 Jul 2006 16:06:16 -0000 @@ -36,6 +36,7 @@ eval _interface=\"\${jail_${_j}_interface:-${jail_interface}}\" eval _exec=\"\$jail_${_j}_exec\" eval _exec_start=\"\${jail_${_j}_exec_start:-${jail_exec_start}}\" + eval _mdconfig=\"\$jail_${_j}_mdconfig\" i=1 while [ true ]; do @@ -86,6 +87,7 @@ debug "$_j ip: $_ip" debug "$_j interface: $_interface" debug "$_j root: $_rootdir" + debug "$_j mdconfig: $_mdconfig" debug "$_j devdir: $_devdir" debug "$_j fdescdir: $_fdescdir" debug "$_j procdir: $_procdir" @@ -154,6 +156,7 @@ # jail_umount_fs() { + local _i _file _md if checkyesno _fdescfs; then if [ -d "${_fdescdir}" ] ; then umount -f ${_fdescdir} >/dev/null 2>&1 @@ -173,10 +176,31 @@ [ -f "${_fstab}" ] || warn "${_fstab} does not exist" umount -a -F "${_fstab}" >/dev/null 2>&1 fi + for _md in ${_mdconfig}; do + eval _file=\$mdconfig_${_md} + _file=${_config##*-f\ } + _file=${_file%%\ *} + if [ -z "${_file}" ]; then + warn "${_md} isn't a vnode-backed md(4) device" + continue + fi + if [ ! -f "${_file}" ]; then + warn "${_file} doesn't exist" + continue + fi + for _j in `df ${_file} 2>/dev/null`; do _fs=${_j}; done + if [ "${_fs}" = "/" ]; then + /etc/rc.d/mdconfig stop ${_md} + else + /etc/rc.d/mdconfig2 stop ${_md} + fi + done } jail_start() { + local _i _file _md + echo -n 'Configuring jails:' set_sysctl jail_set_hostname_allow security.jail.set_hostname_allowed \ set_hostname_allow @@ -199,6 +223,25 @@ if [ -n "${_interface}" ]; then ifconfig ${_interface} alias ${_ip} netmask 255.255.255.255 fi + for _md in ${_mdconfig}; do + eval _file=\$mdconfig_${_md} + _file=${_config##*-f\ } + _file=${_file%%\ *} + if [ -z "${_file}" ]; then + warn "${_md} isn't a vnode-backed md(4) device" + continue + fi + if [ ! -f "${_file}" ]; then + warn "${_file} doesn't exist" + continue + fi + for _i in `df ${_file} 2>/dev/null`; do _fs=${_i}; done + if [ "${_fs}" = "/" ]; then + /etc/rc.d/mdconfig start ${_md} + else + /etc/rc.d/mdconfig2 start ${_md} + fi + done if checkyesno _mount; then info "Mounting fstab for jail ${_jail} (${_fstab})" if [ ! -f "${_fstab}" ]; then Index: mdconfig =================================================================== RCS file: /home/ncvs/src/etc/rc.d/mdconfig,v retrieving revision 1.2 diff -u -r1.2 mdconfig --- mdconfig 18 May 2006 16:04:56 -0000 1.2 +++ mdconfig 19 Jul 2006 16:06:16 -0000 @@ -186,8 +186,11 @@ if [ -z "${_mdconfig_config}" ]; then break else - _mdconfig_list="${_mdconfig_list}${_mdconfig_list:+ }md${_mdconfig_unit}" - _mdconfig_unit=$((${_mdconfig_unit} + 1)) + eval _mdconfig_noauto=\$mdconfig_md${_mdconfig_unit}_noauto + if [ -z "${_mdconfig_noauto}" ]; then + _mdconfig_list="${_mdconfig_list}${_mdconfig_list:+ }md${_mdconfig_unit}" + _mdconfig_unit=$((${_mdconfig_unit} + 1)) + fi fi done fi Index: mdconfig2 =================================================================== RCS file: /home/ncvs/src/etc/rc.d/mdconfig2,v retrieving revision 1.2 diff -u -r1.2 mdconfig2 --- mdconfig2 18 May 2006 16:04:56 -0000 1.2 +++ mdconfig2 19 Jul 2006 16:06:16 -0000 @@ -217,8 +217,11 @@ if [ -z "${_mdconfig2_config}" ]; then break else - _mdconfig2_list="${_mdconfig2_list}${_mdconfig2_list:+ }md${_mdconfig2_unit}" - _mdconfig2_unit=$((${_mdconfig2_unit} + 1)) + eval _mdconfig2_noauto=\$mdconfig_md${_mdconfig_unit}_noauto + if [ -z "${_mdconfig2_noauto}" ]; then + _mdconfig2_list="${_mdconfig2_list}${_mdconfig2_list:+ }md${_mdconfig2_unit}" + _mdconfig2_unit=$((${_mdconfig2_unit} + 1)) + fi fi done fi