Re: svn commit: r307182 - head/etc/rc.d

2016-10-13 Thread Andriy Gapon
On 13/10/2016 10:12, Ngie Cooper (yaneurabeya) wrote:
> 
>> On Oct 12, 2016, at 23:19, Andriy Gapon  wrote:
>>
>> Author: avg
>> Date: Thu Oct 13 06:19:54 2016
>> New Revision: 307182
>> URL: https://svnweb.freebsd.org/changeset/base/307182
>>
>> Log:
>>  rc.d/zfsbe: a new script designed for boot environment support
>>
>>  Currently zfsbe ensures that subordinate filesystems are mounted at the
>>  right mount points.
>>  The script assumes that the subordinate filesystems of a boot environment
>>  have their canmount property set to noauto, so that they are not
>>  automatically mounted on boot.  Whereas the root filesystem is mounted
>>  by the kernel, there was nothing to mount its subordinates.
>>  rc.d/zfsbe fills that gap.
>>
>>  Discussed with: allanjude, will
>>  MFC after:  3 weeks
>>  Differential Revision: https://reviews.freebsd.org/D7797
> 
> I committed the Makefile changes in r307191/r307192.
> Cheers!

Thank you!
Next time I make a change like this I'll make sure to add you as a reviewer :-)


-- 
Andriy Gapon
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


Re: svn commit: r307182 - head/etc/rc.d

2016-10-13 Thread Ngie Cooper (yaneurabeya)

> On Oct 12, 2016, at 23:19, Andriy Gapon  wrote:
> 
> Author: avg
> Date: Thu Oct 13 06:19:54 2016
> New Revision: 307182
> URL: https://svnweb.freebsd.org/changeset/base/307182
> 
> Log:
>  rc.d/zfsbe: a new script designed for boot environment support
> 
>  Currently zfsbe ensures that subordinate filesystems are mounted at the
>  right mount points.
>  The script assumes that the subordinate filesystems of a boot environment
>  have their canmount property set to noauto, so that they are not
>  automatically mounted on boot.  Whereas the root filesystem is mounted
>  by the kernel, there was nothing to mount its subordinates.
>  rc.d/zfsbe fills that gap.
> 
>  Discussed with:  allanjude, will
>  MFC after:   3 weeks
>  Differential Revision: https://reviews.freebsd.org/D7797

I committed the Makefile changes in r307191/r307192.
Cheers!
-Ngie


signature.asc
Description: Message signed with OpenPGP using GPGMail


svn commit: r307182 - head/etc/rc.d

2016-10-13 Thread Andriy Gapon
Author: avg
Date: Thu Oct 13 06:19:54 2016
New Revision: 307182
URL: https://svnweb.freebsd.org/changeset/base/307182

Log:
  rc.d/zfsbe: a new script designed for boot environment support
  
  Currently zfsbe ensures that subordinate filesystems are mounted at the
  right mount points.
  The script assumes that the subordinate filesystems of a boot environment
  have their canmount property set to noauto, so that they are not
  automatically mounted on boot.  Whereas the root filesystem is mounted
  by the kernel, there was nothing to mount its subordinates.
  rc.d/zfsbe fills that gap.
  
  Discussed with:   allanjude, will
  MFC after:3 weeks
  Differential Revision: https://reviews.freebsd.org/D7797

Added:
  head/etc/rc.d/zfsbe   (contents, props changed)
Modified:
  head/etc/rc.d/zfs

Modified: head/etc/rc.d/zfs
==
--- head/etc/rc.d/zfs   Thu Oct 13 06:17:33 2016(r307181)
+++ head/etc/rc.d/zfs   Thu Oct 13 06:19:54 2016(r307182)
@@ -4,7 +4,7 @@
 #
 
 # PROVIDE: zfs
-# REQUIRE: mountcritlocal
+# REQUIRE: zfsbe
 # BEFORE: FILESYSTEMS var
 
 . /etc/rc.subr

Added: head/etc/rc.d/zfsbe
==
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ head/etc/rc.d/zfsbe Thu Oct 13 06:19:54 2016(r307182)
@@ -0,0 +1,71 @@
+#!/bin/sh
+#
+# $FreeBSD$
+#
+
+# PROVIDE: zfsbe
+# REQUIRE: mountcritlocal
+
+# Handle boot environment subordinate filesystems
+# that may have canmount property set to noauto.
+# For these filesystems mountpoint relative to /
+# must be the same as their dataset name relative
+# to BE root dataset.
+
+. /etc/rc.subr
+
+name="zfsbe"
+rcvar="zfs_enable"
+start_cmd="be_start"
+stop_cmd="be_stop"
+required_modules="zfs"
+
+mount_subordinate()
+{
+   local _be
+
+   _be=$1
+   zfs list -rH -o mountpoint,name,canmount,mounted -s mountpoint -t 
filesystem $_be | \
+   while read _mp _name _canmount _mounted ; do
+   # skip filesystems that must not be mounted
+   [ "$_canmount" = "off" ] && continue
+   # skip filesystems that are already mounted
+   [ "$_mounted" = "yes" ] && continue
+   case "$_mp" in
+   "none" | "legacy" | "/" | "/$_be")
+   # do nothing for filesystems with unset or legacy 
mountpoint
+   # or those that would be mounted over /
+   ;;
+   "/$_be/"*)
+   # filesystems with mountpoint relative to BE
+   mount -t zfs $_name ${_mp#/$_be}
+   ;;
+   *)
+   # filesystems with mountpoint elsewhere
+   zfs mount $_name
+   ;;
+   esac
+   done
+}
+
+be_start()
+{
+   if [ `$SYSCTL_N security.jail.jailed` -eq 1 ]; then
+   :
+   else
+   mount -p | while read _dev _mp _type _rest; do
+   [ $_mp  = "/" ] || continue
+   if [ $_type = "zfs" ] ; then
+   mount_subordinate $_dev
+   fi
+   break
+   done
+   fi
+}
+
+be_stop()
+{
+}
+
+load_rc_config $name
+run_rc_command "$1"
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"