From 79c85f83bdcdf75a4a4e731475288d4a5917f3cf Mon Sep 17 00:00:00 2001 From: Bryan Drewery Date: Sat, 5 May 2012 00:30:09 -0500 Subject: [PATCH 1/4] Copy local mountpoint so inherited mountpoint is respected --- beadm | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/beadm b/beadm index 35688bb..bc6ef3d 100755 --- a/beadm +++ b/beadm @@ -83,7 +83,7 @@ __be_new() { # 1=SOURCE 2=TARGET do OPTS="-o ${PROPERTY}=${VALUE} ${OPTS}" done << EOF -$( zfs get -s local -H all ${FS} | grep -v -E "(mountpoint|canmount)" ) +$( zfs get -s local -H all ${FS} | grep -v -E "(canmount)" ) EOF SOURCE=${1##*/} TARGET=${2##*/} @@ -93,8 +93,6 @@ EOF OPTS="" fi zfs clone -o canmount=noauto ${OPTS} ${FS}@${2##*/} ${DATASET} - MOUNT=$( zfs get -H -o value mountpoint ${FS} ) - zfs set mountpoint=${MOUNT} ${DATASET} done echo "Created successfully" } From 0ae22830a8e5729467424ed0686f234ea43b226a Mon Sep 17 00:00:00 2001 From: Bryan Drewery Date: Sat, 5 May 2012 00:30:30 -0500 Subject: [PATCH 2/4] Clone with canmount=off to avoid double mounts --- beadm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/beadm b/beadm index bc6ef3d..a64f19f 100755 --- a/beadm +++ b/beadm @@ -92,7 +92,7 @@ EOF then OPTS="" fi - zfs clone -o canmount=noauto ${OPTS} ${FS}@${2##*/} ${DATASET} + zfs clone -o canmount=off ${OPTS} ${FS}@${2##*/} ${DATASET} done echo "Created successfully" } From affc1def11ae69df410366e68e4d3a3d5e7a61df Mon Sep 17 00:00:00 2001 From: Bryan Drewery Date: Sat, 5 May 2012 00:39:33 -0500 Subject: [PATCH 3/4] No need to set mountpoint when activating, it was cloned --- beadm | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/beadm b/beadm index a64f19f..2ad57b8 100755 --- a/beadm +++ b/beadm @@ -237,21 +237,17 @@ EOF exit 1 fi fi + # Disable mounting on all inactive datasets zfs list -H -o name -r ${POOL}/ROOT \ | grep -v "${POOL}/ROOT/${2}" \ | while read I do zfs set canmount=noauto ${I} done + # Enable mounting for the active BE and promote it zfs list -H -o name -t filesystem -r ${POOL}/ROOT/${2} \ | while read I do - MOUNT=$( zfs get -H -o value mountpoint ${I} ) - zfs set canmount=noauto ${I} - if [ "${MOUNT}" != legacy ] - then - zfs set mountpoint=${MOUNT} ${I} - fi zfs set canmount=on ${I} 2> /dev/null zfs promote ${I} 2> /dev/null done From 68f2a1faf72d4a3cc5d10f390ac6daed008d0169 Mon Sep 17 00:00:00 2001 From: Bryan Drewery Date: Sat, 5 May 2012 00:40:44 -0500 Subject: [PATCH 4/4] Ensure root can be mounted before activating --- beadm | 1 + 1 file changed, 1 insertion(+) diff --git a/beadm b/beadm index 2ad57b8..d74d8fd 100755 --- a/beadm +++ b/beadm @@ -213,6 +213,7 @@ $( mount -p | awk '{print $1 " " $2}' ) EOF if [ ${MOUNT} -eq 0 ] then + zfs set canmount=noauto ${POOL}/ROOT/${2} zfs set mountpoint=${TMPMNT} ${POOL}/ROOT/${2} zfs mount ${POOL}/ROOT/${2} 1> /dev/null 2> /dev/null else