The following reply was made to PR misc/149831; it has been noted by GNATS.
From: Kenneth Vestergaard <k...@binarysolutions.dk> To: bug-follo...@freebsd.org, k...@binarysolutions.dk Cc: Subject: Re: misc/149831: [PATCH] add support to /etc/rc.d/jail for delegating ZFS-filesystems to jails Date: Fri, 20 Aug 2010 16:03:16 +0200 --Apple-Mail-4--936881281 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=us-ascii Improved patch - it is necessary to get a stable jail-id before launching the jail, since the delegated filesystems need to be delegated before launching /etc/rc. --Apple-Mail-4--936881281 Content-Disposition: attachment; filename=zfs-fix-delegated-paths-in-jail.diff.txt Content-Type: text/plain; name="zfs-fix-delegated-paths-in-jail.diff.txt" Content-Transfer-Encoding: 7bit --- src/etc/rc.d/jail.orig 2010-08-19 12:39:01.000000000 +0200 +++ src/etc/rc.d/jail 2010-08-20 15:57:07.508674101 +0200 @@ -41,6 +41,7 @@ eval _ip=\"\$jail_${_j}_ip\" eval _interface=\"\${jail_${_j}_interface:-${jail_interface}}\" eval _exec=\"\$jail_${_j}_exec\" + eval _delegate_path=\"\$jail_${_j}_delegate_path\" i=0 while : ; do @@ -132,6 +133,7 @@ debug "$_j procdir: $_procdir" debug "$_j ruleset: $_ruleset" debug "$_j fstab: $_fstab" + debug "$_j delegate_path: $_delegate_path" i=0 while : ; do @@ -635,8 +637,23 @@ i=$((i + 1)) done - eval ${_setfib} jail ${_flags} -i ${_rootdir} ${_hostname} \ - \"${_addrl}\" ${_exec_start} > ${_tmp_jail} 2>&1 + # create jail with 'persist', so we can get a jid before starting it, + # which is needed if we need to delegate any zfs-filesystems to it. + jail -i -c name=${_jail} path=${_rootdir} persist > ${_tmp_jail} 2>&1 + _jail_id=$(head -1 ${_tmp_jail}) + echo started jail ${_jail} with id ${_jail_id} + + if [ ! -z "${_delegate_path}" ] ; then + jail -m jid=${_jail_id} allow.mount=1 + /sbin/zfs get -s local -rH -o name,value jailed ${_delegate_path} | \ + /usr/bin/awk '$2 == "on" { print $1 }' | \ + /usr/bin/xargs -I % /sbin/zfs jail ${_jail_id} % + fi + + eval ${_setfib} jail ${_flags} -m \ + jid=${_jail_id} \ + host.hostname=${_hostname} \ + ip4.addr=\"${_addrl}\" command=${_exec_start} 2>&1 if [ "$?" -eq 0 ] ; then _jail_id=$(head -1 ${_tmp_jail}) @@ -669,6 +686,7 @@ echo " cannot start jail \"${_jail}\": " tail +2 ${_tmp_jail} fi + jail -m jid=${_jail_id} nopersist # remove 'persist' set at create-time rm -f ${_tmp_jail} done rmdir ${_tmp_dir} --Apple-Mail-4--936881281-- _______________________________________________ freebsd-bugs@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-bugs To unsubscribe, send any mail to "freebsd-bugs-unsubscr...@freebsd.org"