grub-devel
[Top][All Lists]
Advanced

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

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


From: Daniel Kiper
Subject: Re: [PATCH] grub-core: Pass -P to zpool status
Date: Tue, 8 Nov 2022 17:30:04 +0100
User-agent: NeoMutt/20170113 (1.7.2)

On Tue, Nov 08, 2022 at 12:22:36AM +0100, Arsen Arsenović via Grub-devel wrote:
> 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.

Missing "Signed-off-by: Arsen Arsenović <arsen@aarsen.me>" line.
I can add it on your behalf if you are OK with it.

Otherwise Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>...

I will commit this patch in a week or so if I do not hear any objections
from folks more experienced with ZFS than I.

Daniel

> ---
> 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)



reply via email to

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