[prev in list] [next in list] [prev in thread] [next in thread] 

List:       grub-devel
Subject:    Re: [PATCHv2] hurd: Support device entries with @/dev/disk: qualifier
From:       Daniel Kiper <dkiper () net-space ! pl>
Date:       2022-04-27 15:04:11
Message-ID: 20220427150411.o2tabth2j7ze5y7b () tomti ! i ! net-space ! pl
[Download RAW message or body]

Sorry for late reply but I am busy...

On Thu, Feb 24, 2022 at 12:34:13AM +0100, Samuel Thibault wrote:
> Those are used with non-bootstrap disk drivers, for which libstore has to
> open /dev/disk before calling device_open on it instead of on the device
> master port.  Normally in that case all /dev/ entries also have the @/dev/disk:
> qualifier, so we can just drop it.
>
> Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
>
> ---
> Difference with v1: better drop the @/dev/disk: qualifier right from
> grub_util_hurd_get_disk_info so it benefits alls the callees and not
> only grub_util_part_to_disk.
>
> Index: grub2-2.06/grub-core/osdep/hurd/getroot.c
> ===================================================================
> --- grub2-2.06.orig/grub-core/osdep/hurd/getroot.c
> +++ grub2-2.06/grub-core/osdep/hurd/getroot.c
> @@ -112,11 +112,23 @@ grub_util_find_hurd_root_device (const c
>    if (strncmp (name, "device:", sizeof ("device:") - 1) == 0)
>      {
>        char *dev_name = name + sizeof ("device:") - 1;
> -      size_t size = sizeof ("/dev/") - 1 + strlen (dev_name) + 1;
> -      char *next;
> -      ret = malloc (size);
> -      next = stpncpy (ret, "/dev/", size);
> -      stpncpy (next, dev_name, size - (next - ret));
> +
> +      if (dev_name[0] == '@')
> +        {
> +          /* non-bootstrap disk driver, the /dev/ entry is normally set up with
> +             the same @.  */

Please format comments according to this [1].

> +          char *next_name = strchr (dev_name, ':');

Could you put empty line here?

> +          if (next_name)
> +            dev_name = next_name + 1;
> +        }
> +
> +      {
> +        size_t size = sizeof ("/dev/") - 1 + strlen (dev_name) + 1;
> +        char *next;

I would prefer if you leave variable definitions above and put code
without {} here.

> +        ret = malloc (size);

I think this should be xmalloc() call instead of malloc() one. Or you
should check ret != NULL before use.

> +        next = stpncpy (ret, "/dev/", size);
> +        stpncpy (next, dev_name, size - (next - ret));
> +      }
>      }
>    else if (!strncmp (name, "file:", sizeof ("file:") - 1))
>      ret = strdup (name + sizeof ("file:") - 1);
> Index: grub2-2.06/grub-core/osdep/hurd/hostdisk.c
> ===================================================================
> --- grub2-2.06.orig/grub-core/osdep/hurd/hostdisk.c
> +++ grub2-2.06/grub-core/osdep/hurd/hostdisk.c
> @@ -87,6 +87,19 @@ grub_util_hurd_get_disk_info (const char
>  	  *parent = xmalloc (len+1);
>  	  memcpy (*parent, data, len);
>  	  (*parent)[len] = '\0';
> +
> +	  if ((*parent)[0] == '@')
> +	    {
> +	      /* non-bootstrap disk driver, the /dev/ entry is normally set up with
> +		 the same @.  */

Please fix this comment too.

> +	      char *next_path = strchr (*parent, ':');

Please add empty line here.

> +	      if (next_path)
> +		{
> +		  char *n = strdup (next_path + 1);

Ditto.

> +		  free (*parent);
> +		  *parent = n;
> +		}
> +	    }
>  	}
>      }
>    if (offset)

[1] https://www.gnu.org/software/grub/manual/grub-dev/grub-dev.html#Comments

Daniel

_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic