contrib; dracut: flatten zfs-load-key, simplify zfs-env-bootfs
Upstream-commit: fec2c613a4
Upstream-change: drop 90zfs/module-setup.sh.in cleanups that don't apply
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Ahelenia Ziemiańska <nabijaczleweli@nabijaczleweli.xyz>
Closes #13291
This commit is contained in:
parent
0864c29e7c
commit
71a1d8e5dc
|
@ -8,7 +8,7 @@ Before=zfs-import.target
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
Type=oneshot
|
Type=oneshot
|
||||||
ExecStart=/bin/sh -c "exec systemctl set-environment BOOTFS=$(@sbindir@/zpool list -H -o bootfs | grep -m1 -v '^-$')"
|
ExecStart=/bin/sh -c "exec systemctl set-environment BOOTFS=$(@sbindir@/zpool list -H -o bootfs | grep -m1 -vFx -)"
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=zfs-import.target
|
WantedBy=zfs-import.target
|
||||||
|
|
|
@ -20,14 +20,12 @@ if [ "$BOOTFS" = "zfs:AUTO" ]; then
|
||||||
BOOTFS="$(zpool get -Ho value bootfs | grep -m1 -vFx -)"
|
BOOTFS="$(zpool get -Ho value bootfs | grep -m1 -vFx -)"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# if pool encryption is active and the zfs command understands '-o encryption'
|
[ "$(zpool get -Ho value feature@encryption "${BOOTFS%%/*}")" = 'active' ] || return 0
|
||||||
if [ "$(zpool list -H -o feature@encryption "${BOOTFS%%/*}")" = 'active' ]; then
|
|
||||||
# if the root dataset has encryption enabled
|
ENCRYPTIONROOT="$(zfs get -Ho value encryptionroot "${BOOTFS}")"
|
||||||
ENCRYPTIONROOT="$(zfs get -H -o value encryptionroot "${BOOTFS}")"
|
[ "${ENCRYPTIONROOT}" = "-" ] && return 0
|
||||||
if ! [ "${ENCRYPTIONROOT}" = "-" ]; then
|
|
||||||
KEYSTATUS="$(zfs get -H -o value keystatus "${ENCRYPTIONROOT}")"
|
[ "$(zfs get -Ho value keystatus "${ENCRYPTIONROOT}")" = "unavailable" ] || return 0
|
||||||
# continue only if the key needs to be loaded
|
|
||||||
[ "$KEYSTATUS" = "unavailable" ] || exit 0
|
|
||||||
|
|
||||||
KEYLOCATION="$(zfs get -H -o value keylocation "${ENCRYPTIONROOT}")"
|
KEYLOCATION="$(zfs get -H -o value keylocation "${ENCRYPTIONROOT}")"
|
||||||
case "${KEYLOCATION%%://*}" in
|
case "${KEYLOCATION%%://*}" in
|
||||||
|
@ -44,18 +42,16 @@ if [ "$(zpool list -H -o feature@encryption "${BOOTFS%%/*}")" = 'active' ]; then
|
||||||
KEYFILE="${KEYLOCATION#file://}"
|
KEYFILE="${KEYLOCATION#file://}"
|
||||||
[ -r "${KEYFILE}" ] || udevadm settle
|
[ -r "${KEYFILE}" ] || udevadm settle
|
||||||
[ -r "${KEYFILE}" ] || {
|
[ -r "${KEYFILE}" ] || {
|
||||||
info "Waiting for key ${KEYFILE} for ${ENCRYPTIONROOT}..."
|
info "ZFS: Waiting for key ${KEYFILE} for ${ENCRYPTIONROOT}..."
|
||||||
for _ in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20; do
|
for _ in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20; do
|
||||||
sleep 0.5s
|
sleep 0.5s
|
||||||
[ -r "${KEYFILE}" ] && break
|
[ -r "${KEYFILE}" ] && break
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
[ -r "${KEYFILE}" ] || warn "Key ${KEYFILE} for ${ENCRYPTIONROOT} hasn't appeared. Trying anyway."
|
[ -r "${KEYFILE}" ] || warn "ZFS: Key ${KEYFILE} for ${ENCRYPTIONROOT} hasn't appeared. Trying anyway."
|
||||||
zfs load-key "${ENCRYPTIONROOT}"
|
zfs load-key "${ENCRYPTIONROOT}"
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
zfs load-key "${ENCRYPTIONROOT}"
|
zfs load-key "${ENCRYPTIONROOT}"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
Loading…
Reference in New Issue