diff options
author | allanjude <allanjude@FreeBSD.org> | 2016-07-26 05:26:07 +0000 |
---|---|---|
committer | allanjude <allanjude@FreeBSD.org> | 2016-07-26 05:26:07 +0000 |
commit | 5087a345bdf0134386f2dec72a6e80e8cc4c6864 (patch) | |
tree | 59b8b48cd4032e280359cd5b42d6716deafc1872 /usr.sbin/bsdinstall/scripts | |
parent | 580d72d572e80f537755d2949d4d0b69c4e315af (diff) | |
download | FreeBSD-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/scripts')
-rwxr-xr-x | usr.sbin/bsdinstall/scripts/zfsboot | 9 |
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 |