summaryrefslogtreecommitdiffstats
path: root/usr.sbin/bsdinstall
diff options
context:
space:
mode:
authorallanjude <allanjude@FreeBSD.org>2016-07-26 05:26:07 +0000
committerallanjude <allanjude@FreeBSD.org>2016-07-26 05:26:07 +0000
commit5087a345bdf0134386f2dec72a6e80e8cc4c6864 (patch)
tree59b8b48cd4032e280359cd5b42d6716deafc1872 /usr.sbin/bsdinstall
parent580d72d572e80f537755d2949d4d0b69c4e315af (diff)
downloadFreeBSD-src-5087a345bdf0134386f2dec72a6e80e8cc4c6864.zip
FreeBSD-src-5087a345bdf0134386f2dec72a6e80e8cc4c6864.tar.gz
MFC: r302941
At the start of the installation process, all ZFS pools are exported and all GELI instances are detached, to allow a restarted install to proceed. PR: 210814 Approved by: re (gjb)
Diffstat (limited to 'usr.sbin/bsdinstall')
-rwxr-xr-xusr.sbin/bsdinstall/scripts/zfsboot9
1 files changed, 9 insertions, 0 deletions
diff --git a/usr.sbin/bsdinstall/scripts/zfsboot b/usr.sbin/bsdinstall/scripts/zfsboot
index d2de12b..6424579 100755
--- a/usr.sbin/bsdinstall/scripts/zfsboot
+++ b/usr.sbin/bsdinstall/scripts/zfsboot
@@ -224,6 +224,7 @@ ZFS_UNMOUNT='zfs unmount "%s"'
ZPOOL_CREATE_WITH_OPTIONS='zpool create %s "%s" %s %s'
ZPOOL_DESTROY='zpool destroy "%s"'
ZPOOL_EXPORT='zpool export "%s"'
+ZPOOL_EXPORT_F='zpool export -f "%s"'
ZPOOL_IMPORT_WITH_OPTIONS='zpool import %s "%s"'
ZPOOL_LABELCLEAR_F='zpool labelclear -f "%s"'
ZPOOL_SET='zpool set %s "%s"'
@@ -783,6 +784,14 @@ zfs_create_diskpart()
# NOTE: `-F' required to destroy if partitions still exist.
# NOTE: Failure is ok here, blank disk will have nothing to destroy.
#
+ f_dprintf "$funcname: Exporting ZFS pools..."
+ zpool list -Ho name | while read z_name; do
+ f_eval_catch -d $funcname zpool "$ZPOOL_EXPORT_F" $z_name
+ done
+ f_dprintf "$funcname: Detaching all GELI providers..."
+ geli status | tail -n +2 | while read g_name g_status g_component; do
+ f_eval_catch -d $funcname geli "$GELI_DETACH_F" $g_name
+ done
f_dprintf "$funcname: Destroying all data/layouts on \`%s'..." "$disk"
f_eval_catch -d $funcname gpart "$GPART_DESTROY_F" $disk
f_eval_catch -d $funcname graid "$GRAID_DELETE" $disk
OpenPOWER on IntegriCloud