grub-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH] grub-core: Pass -P to zpool status


From: Arsen Arsenović
Subject: [PATCH] grub-core: Pass -P to zpool status
Date: Tue, 8 Nov 2022 00:22:36 +0100

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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]