diff options
Diffstat (limited to 'sys-fs/zfs/files/2.1.5-dracut-non-root.patch')
-rw-r--r-- | sys-fs/zfs/files/2.1.5-dracut-non-root.patch | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/sys-fs/zfs/files/2.1.5-dracut-non-root.patch b/sys-fs/zfs/files/2.1.5-dracut-non-root.patch new file mode 100644 index 000000000000..6d1caf92cd2d --- /dev/null +++ b/sys-fs/zfs/files/2.1.5-dracut-non-root.patch @@ -0,0 +1,33 @@ +https://github.com/openzfs/zfs/pull/13589 +https://bugs.gentoo.org/854333 + +From ef9d996669cc2ec596d4e90753b89b32a3f0ce59 Mon Sep 17 00:00:00 2001 +From: "Andrew J. Hesford" <ajh@sideband.org> +Date: Fri, 24 Jun 2022 11:05:53 -0400 +Subject: [PATCH] Dracut module: fix parsing of root= kernel command-line + argument + +Some Dracut modules may read the `root=` kernel command-line argument +and rewrite it; in particular, `rootfs-block` installs a command-line +hook that to canonicalize arguments that specify block devices. If the +`zfs` module is added to an initramfs (which it is, by default, as long +as the core ZFS utilities are available) on a system that does not use a +ZFS root filesystem, the `zfs` module will overwrite the `root` shell +variable with the contents of the kernel command-line in the process of +determining if it should control mounting the root. This breaks the +initramfs. To solve this problem, only parse the kernel command-line +directly if the `root` shell variable is empty; otherwise, rely on the +parsing (and possible rewriting) done by other modules. + +Signed-off-by: Andrew J. Hesford <ajh@sideband.org> +--- a/contrib/dracut/90zfs/zfs-lib.sh.in ++++ b/contrib/dracut/90zfs/zfs-lib.sh.in +@@ -88,7 +88,7 @@ decode_root_args() { + return + fi + +- root=$(getarg root=) ++ [ -n "$root" ] || root=$(getarg root=) + rootfstype=$(getarg rootfstype=) + + # shellcheck disable=SC2249 |