aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--contrib/initramfs/scripts/zfs.in11
1 files changed, 10 insertions, 1 deletions
diff --git a/contrib/initramfs/scripts/zfs.in b/contrib/initramfs/scripts/zfs.in
index 18c8ca2ad..1b8160a6b 100644
--- a/contrib/initramfs/scripts/zfs.in
+++ b/contrib/initramfs/scripts/zfs.in
@@ -193,7 +193,7 @@ import_pool()
# Verify that the pool isn't already imported
# Make as sure as we can to not require '-f' to import.
- "${ZPOOL}" status "$pool" > /dev/null 2>&1 && return 0
+ "${ZPOOL}" get name,guid -o value -H 2>/dev/null | grep -Fxq "$pool" && return 0
# For backwards compatibility, make sure that ZPOOL_IMPORT_PATH is set
# to something we can use later with the real import(s). We want to
@@ -772,6 +772,7 @@ mountroot()
# root=zfs:<pool>/<dataset> (uses this for rpool - first part, without 'zfs:')
#
# Option <dataset> could also be <snapshot>
+ # Option <pool> could also be <guid>
# ------------
# Support force option
@@ -889,6 +890,14 @@ mountroot()
/bin/sh
fi
+ # In case the pool was specified as guid, resolve guid to name
+ pool="$("${ZPOOL}" get name,guid -o name,value -H | \
+ awk -v pool="${ZFS_RPOOL}" '$2 == pool { print $1 }')"
+ if [ -n "$pool" ]; then
+ ZFS_BOOTFS="${pool}/${ZFS_BOOTFS#*/}"
+ ZFS_RPOOL="${pool}"
+ fi
+
# Set elevator=noop on the root pool's vdevs' disks. ZFS already
# does this for wholedisk vdevs (for all pools), so this is only
# important for partitions.