From bd76e6817cb53ad621fc100d0ec01fcaacbb092e Mon Sep 17 00:00:00 2001 From: dacianstremtan <35844628+dacianstremtan@users.noreply.github.com> Date: Tue, 1 Oct 2019 15:54:27 -0400 Subject: Fix for zfs-dracut regression Line 31 and 32 overwrote the ${root} variable which broke mount-zfs.sh We have create a new variable for the dataset instead of overwriting the ${root} variable in zfs-load-key.sh${root} variable in zfs-load-key.sh Reviewed-by: Kash Pande Reviewed-by: Garrett Fields Reviewed-by: Brian Behlendorf Signed-off-by: Dacian Reece-Stremtan Closes #8913 Closes #9379 --- contrib/dracut/90zfs/zfs-load-key.sh.in | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/contrib/dracut/90zfs/zfs-load-key.sh.in b/contrib/dracut/90zfs/zfs-load-key.sh.in index 9e7adfc79..42dc1d08f 100755 --- a/contrib/dracut/90zfs/zfs-load-key.sh.in +++ b/contrib/dracut/90zfs/zfs-load-key.sh.in @@ -25,22 +25,23 @@ while true; do done # run this after import as zfs-import-cache/scan service is confirmed good +# we do not overwrite the ${root} variable, but create a new one, BOOTFS, to hold the dataset if [ "${root}" = "zfs:AUTO" ] ; then - root="$(zpool list -H -o bootfs | awk '$1 != "-" {print; exit}')" + BOOTFS="$(zpool list -H -o bootfs | awk '$1 != "-" {print; exit}')" else - root="${root##zfs:}" - root="${root##ZFS=}" + BOOTFS="${root##zfs:}" + BOOTFS="${root##ZFS=}" fi # if pool encryption is active and the zfs command understands '-o encryption' -if [ "$(zpool list -H -o feature@encryption $(echo "${root}" | awk -F\/ '{print $1}'))" = 'active' ]; then +if [ "$(zpool list -H -o feature@encryption $(echo "${BOOTFS}" | awk -F\/ '{print $1}'))" = 'active' ]; then # if the root dataset has encryption enabled - ENCRYPTIONROOT=$(zfs get -H -o value encryptionroot "${root}") + ENCRYPTIONROOT=$(zfs get -H -o value encryptionroot "${BOOTFS}") if ! [ "${ENCRYPTIONROOT}" = "-" ]; then # decrypt them TRY_COUNT=5 while [ $TRY_COUNT -gt 0 ]; do - systemd-ask-password "Encrypted ZFS password for ${root}" --no-tty | zfs load-key "${ENCRYPTIONROOT}" && break + systemd-ask-password "Encrypted ZFS password for ${BOOTFS}" --no-tty | zfs load-key "${ENCRYPTIONROOT}" && break TRY_COUNT=$((TRY_COUNT - 1)) done fi -- cgit v1.2.3