nixos/zfs: replace parentheses with braces
The parentheses prevent the `continue` line from working by running the
enclosed in a subshell -- I noticed that ZFS would start asking me for
my password to encrypted child datasets, even though they were not
specified in `requestEncryptionCredentials`. The following logs would
also be present in the import unit's journal:
Oct 31 22:13:17 host systemd[1]: Starting Import ZFS pool "pool"...
Oct 31 22:13:44 host zfs-import-pool-start[3711]: importing ZFS pool "pool"...
Oct 31 22:13:44 host zfs-import-pool-start[4017]:pool/nix/store/39zij3xcxn4w38v6x8f88bx8y91nv0rm-unit-script-zfs-import-pool-start/bin/zfs-import-pool-start: line 31: continue: only meaningful in a `for', `while', or `until' loop
Oct 31 22:13:44 host zfs-import-pool-start[4020]:pool/nix/store/39zij3xcxn4w38v6x8f88bx8y91nv0rm-unit-script-zfs-import-pool-start/bin/zfs-import-pool-start: line 31: continue: only meaningful in a `for', `while', or `until' loop
Oct 31 22:15:14 host zfs-import-pool-start[4023]: Failed to query password: Timer expired
Oct 31 22:15:14 host zfs-import-pool-start[4024]: Key load error: encryption failure
Oct 31 22:15:14 host systemd[1]: zfs-import-pool.service: Main process exited, code=exited, status=255/EXCEPTION
Oct 31 22:15:14 host systemd[1]: zfs-import-pool.service: Failed with result 'exit-code'.
Oct 31 22:15:14 host systemd[1]: Failed to start Import ZFS pool "pool".
This commit is contained in:
@@ -561,7 +561,8 @@ in
|
|||||||
then cfgZfs.requestEncryptionCredentials
|
then cfgZfs.requestEncryptionCredentials
|
||||||
else cfgZfs.requestEncryptionCredentials != []) ''
|
else cfgZfs.requestEncryptionCredentials != []) ''
|
||||||
${cfgZfs.package}/sbin/zfs list -rHo name,keylocation ${pool} | while IFS=$'\t' read ds kl; do
|
${cfgZfs.package}/sbin/zfs list -rHo name,keylocation ${pool} | while IFS=$'\t' read ds kl; do
|
||||||
(${optionalString (!isBool cfgZfs.requestEncryptionCredentials) ''
|
{
|
||||||
|
${optionalString (!isBool cfgZfs.requestEncryptionCredentials) ''
|
||||||
if ! echo '${concatStringsSep "\n" cfgZfs.requestEncryptionCredentials}' | grep -qFx "$ds"; then
|
if ! echo '${concatStringsSep "\n" cfgZfs.requestEncryptionCredentials}' | grep -qFx "$ds"; then
|
||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
@@ -575,7 +576,8 @@ in
|
|||||||
* )
|
* )
|
||||||
${cfgZfs.package}/sbin/zfs load-key "$ds"
|
${cfgZfs.package}/sbin/zfs load-key "$ds"
|
||||||
;;
|
;;
|
||||||
esac) < /dev/null # To protect while read ds kl in case anything reads stdin
|
esac
|
||||||
|
} < /dev/null # To protect while read ds kl in case anything reads stdin
|
||||||
done
|
done
|
||||||
''}
|
''}
|
||||||
echo "Successfully imported ${pool}"
|
echo "Successfully imported ${pool}"
|
||||||
|
|||||||
Reference in New Issue
Block a user