mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2024-11-17 01:51:00 +03:00
Allow spaces in pool names for cmdline argument
PR #8114 quoted the ${ENCRYPTIONROOT} parameter to ensure we don't lose spaces when unlocking root filesystem in the off chance that it has a space in its name. Unfortunately, dracut and initramfs-tools do not actually get the quotes from the cmdline. If we use root=ZFS="root pool/filesystem name" the script still only sees root=ZFS=root and no quotation marks. Because + is a reserved character in ZFS, it's used as a placeholder for spaces in the kernel cmdline. In this way, root=ZFS=root+pool/filesystem+name will properly expand by replacing the character with sed (POSIX compliant method). Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by: bunder2015 <omfgbunder@gmail.com> Signed-off-by: Kash Pande <kash@tripleback.net> Issue #8114 Closes #8117
This commit is contained in:
parent
c8fd652ce7
commit
eb1a0b6174
@ -39,11 +39,14 @@ case "${root}" in
|
|||||||
# root=zfs:rpool/ROOT
|
# root=zfs:rpool/ROOT
|
||||||
# root=zfs:FILESYSTEM=rpool/ROOT
|
# root=zfs:FILESYSTEM=rpool/ROOT
|
||||||
# root=FILESYSTEM=rpool/ROOT
|
# root=FILESYSTEM=rpool/ROOT
|
||||||
|
# root=ZFS=pool+with+space/ROOT+WITH+SPACE (translates to root=ZFS=pool with space/ROOT WITH SPACE)
|
||||||
|
|
||||||
# Strip down to just the pool/fs
|
# Strip down to just the pool/fs
|
||||||
root="${root#zfs:}"
|
root="${root#zfs:}"
|
||||||
root="${root#FILESYSTEM=}"
|
root="${root#FILESYSTEM=}"
|
||||||
root="zfs:${root#ZFS=}"
|
root="zfs:${root#ZFS=}"
|
||||||
|
# switch + with spaces because kernel cmdline does not allow us to quote parameters
|
||||||
|
root=$(printf '%s\n' "$root" | sed "s/+/ /g")
|
||||||
rootok=1
|
rootok=1
|
||||||
wait_for_zfs=1
|
wait_for_zfs=1
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user