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"

Reply via email to