zpool status by default prints basenames of VDEVs, which means that GRUB would have to go around guessing to see whether a VDEV exists. Instead, it'd be more robust to simply tell zpool to give us full paths to VDEVs via -P. --- Hey there,
While setting up a new GNU+Linux install on a ZFS root, using /dev/disk/by-id/ aliases for VDEVs rather than just /dev/?d* nodes, grub-mkconfig started failing as a result of (for instance) /dev/ata-... not existing. This was caused by a workaround for zfs status not printing full paths to VDEVs by default, but this can be solved more directly by just telling zpool status to print full paths instead. Apologies if I missed anything, I'm writing this in a hurry during a very hectic week. Thanks! grub-core/osdep/unix/getroot.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/grub-core/osdep/unix/getroot.c b/grub-core/osdep/unix/getroot.c index 7d2a29f31..cde821eb9 100644 --- a/grub-core/osdep/unix/getroot.c +++ b/grub-core/osdep/unix/getroot.c @@ -229,14 +229,15 @@ grub_util_find_root_devices_from_poolname (char *poolname) char name[PATH_MAX + 1], state[257], readlen[257], writelen[257]; char cksum[257], notes[257]; unsigned int dummy; - const char *argv[4]; + const char *argv[5]; pid_t pid; int fd; argv[0] = "zpool"; argv[1] = "status"; - argv[2] = poolname; - argv[3] = NULL; + argv[2] = "-P"; + argv[3] = poolname; + argv[4] = NULL; pid = grub_util_exec_pipe (argv, &fd); if (!pid) -- 2.38.1 _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel