All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] hurd: Support device entries with @/dev/disk: qualifier
@ 2022-02-22 23:27 Samuel Thibault
  2022-02-23 23:34 ` [PATCHv2] " Samuel Thibault
  0 siblings, 1 reply; 6+ messages in thread
From: Samuel Thibault @ 2022-02-22 23:27 UTC (permalink / raw)
  To: grub-devel; +Cc: bug-hurd

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>

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 @.  */
+          char *next_name = strchr (dev_name, ':');
+          if (next_name)
+            dev_name = next_name + 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));
+      }
     }
   else if (!strncmp (name, "file:", sizeof ("file:") - 1))
     ret = strdup (name + sizeof ("file:") - 1);
@@ -166,12 +178,27 @@ grub_util_part_to_disk (const char *os_d
 		    || strncmp ("/dev/hd", os_dev, 7) == 0)))
     {
       *is_part = !is_fulldisk (path, os_dev);
+
+      if (path[0] == '@')
+        {
+          /* non-bootstrap disk driver, the /dev/ entry is normally set up with
+             the same @.  */
+          char *next_path = strchr (path, ':');
+          if (next_path)
+            {
+              char *n = strdup (next_path + 1);
+              free (path);
+              path = n;
+            }
+        }
+
       if (path[0] != '/')
 	{
 	  char *n = xasprintf ("/dev/%s", path);
 	  free (path);
 	  path = n;
 	}
+
       return path;
     }
   free (path);


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCHv2] hurd: Support device entries with @/dev/disk: qualifier
  2022-02-22 23:27 [PATCH] hurd: Support device entries with @/dev/disk: qualifier Samuel Thibault
@ 2022-02-23 23:34 ` Samuel Thibault
  2022-04-27 15:04   ` Daniel Kiper
  0 siblings, 1 reply; 6+ messages in thread
From: Samuel Thibault @ 2022-02-23 23:34 UTC (permalink / raw)
  To: grub-devel, bug-hurd

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 @.  */
+          char *next_name = strchr (dev_name, ':');
+          if (next_name)
+            dev_name = next_name + 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));
+      }
     }
   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 @.  */
+	      char *next_path = strchr (*parent, ':');
+	      if (next_path)
+		{
+		  char *n = strdup (next_path + 1);
+		  free (*parent);
+		  *parent = n;
+		}
+	    }
 	}
     }
   if (offset)


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCHv2] hurd: Support device entries with @/dev/disk: qualifier
  2022-02-23 23:34 ` [PATCHv2] " Samuel Thibault
@ 2022-04-27 15:04   ` Daniel Kiper
  2022-04-27 21:00     ` [PATCHv3] " Samuel Thibault
  0 siblings, 1 reply; 6+ messages in thread
From: Daniel Kiper @ 2022-04-27 15:04 UTC (permalink / raw)
  To: samuel.thibault; +Cc: grub-devel, bug-hurd

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


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCHv3] hurd: Support device entries with @/dev/disk: qualifier
  2022-04-27 15:04   ` Daniel Kiper
@ 2022-04-27 21:00     ` Samuel Thibault
  2022-05-17 14:22       ` Daniel Kiper
  0 siblings, 1 reply; 6+ messages in thread
From: Samuel Thibault @ 2022-04-27 21:00 UTC (permalink / raw)
  To: The development of GNU GRUB; +Cc: bug-hurd

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>

Message-Id: <20220223233413.wkk66pxp5p2q2wrf@begin>

---
Difference with v2: formatting, using xmalloc instead of malloc.

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.

diff --git a/grub-core/osdep/hurd/getroot.c b/grub-core/osdep/hurd/getroot.c
index c66b206fa..5f0e366d1 100644
--- a/grub-core/osdep/hurd/getroot.c
+++ b/grub-core/osdep/hurd/getroot.c
@@ -112,9 +112,21 @@ grub_util_find_hurd_root_device (const char *path)
   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;
+      size_t size;
       char *next;
-      ret = malloc (size);
+
+      if (dev_name[0] == '@')
+        {
+          /* non-bootstrap disk driver, the /dev/ entry is normally set up with
+           * the same @. */
+          char *next_name = strchr (dev_name, ':');
+
+          if (next_name)
+            dev_name = next_name + 1;
+        }
+
+      size = sizeof ("/dev/") - 1 + strlen (dev_name) + 1;
+      ret = xmalloc (size);
       next = stpncpy (ret, "/dev/", size);
       stpncpy (next, dev_name, size - (next - ret));
     }
diff --git a/grub-core/osdep/hurd/hostdisk.c b/grub-core/osdep/hurd/hostdisk.c
index c47b5a5ea..73c442ae5 100644
--- a/grub-core/osdep/hurd/hostdisk.c
+++ b/grub-core/osdep/hurd/hostdisk.c
@@ -87,6 +87,21 @@ grub_util_hurd_get_disk_info (const char *dev, grub_uint32_t *secsize, grub_disk
 	  *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 @. */
+	      char *next_path = strchr (*parent, ':');
+
+	      if (next_path)
+		{
+		  char *n = strdup (next_path + 1);
+
+		  free (*parent);
+		  *parent = n;
+		}
+	    }
 	}
     }
   if (offset)


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCHv3] hurd: Support device entries with @/dev/disk: qualifier
  2022-04-27 21:00     ` [PATCHv3] " Samuel Thibault
@ 2022-05-17 14:22       ` Daniel Kiper
  2022-05-17 14:42         ` Samuel Thibault
  0 siblings, 1 reply; 6+ messages in thread
From: Daniel Kiper @ 2022-05-17 14:22 UTC (permalink / raw)
  To: The development of GNU GRUB, bug-hurd

On Wed, Apr 27, 2022 at 11:00:29PM +0200, 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>
>
> Message-Id: <20220223233413.wkk66pxp5p2q2wrf@begin>
>
> ---
> Difference with v2: formatting, using xmalloc instead of malloc.
>
> 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.
>
> diff --git a/grub-core/osdep/hurd/getroot.c b/grub-core/osdep/hurd/getroot.c
> index c66b206fa..5f0e366d1 100644
> --- a/grub-core/osdep/hurd/getroot.c
> +++ b/grub-core/osdep/hurd/getroot.c
> @@ -112,9 +112,21 @@ grub_util_find_hurd_root_device (const char *path)
>    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;
> +      size_t size;
>        char *next;
> -      ret = malloc (size);
> +
> +      if (dev_name[0] == '@')
> +        {
> +          /* non-bootstrap disk driver, the /dev/ entry is normally set up with
> +           * the same @. */
> +          char *next_name = strchr (dev_name, ':');
> +
> +          if (next_name)
> +            dev_name = next_name + 1;
> +        }
> +
> +      size = sizeof ("/dev/") - 1 + strlen (dev_name) + 1;
> +      ret = xmalloc (size);
>        next = stpncpy (ret, "/dev/", size);
>        stpncpy (next, dev_name, size - (next - ret));
>      }
> diff --git a/grub-core/osdep/hurd/hostdisk.c b/grub-core/osdep/hurd/hostdisk.c
> index c47b5a5ea..73c442ae5 100644
> --- a/grub-core/osdep/hurd/hostdisk.c
> +++ b/grub-core/osdep/hurd/hostdisk.c
> @@ -87,6 +87,21 @@ grub_util_hurd_get_disk_info (const char *dev, grub_uint32_t *secsize, grub_disk
>  	  *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 @. */
> +	      char *next_path = strchr (*parent, ':');
> +
> +	      if (next_path)
> +		{
> +		  char *n = strdup (next_path + 1);

I think this should be xstrdup() instead of strdup(). I can fix this for
you before push.

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

Daniel

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


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCHv3] hurd: Support device entries with @/dev/disk: qualifier
  2022-05-17 14:22       ` Daniel Kiper
@ 2022-05-17 14:42         ` Samuel Thibault
  0 siblings, 0 replies; 6+ messages in thread
From: Samuel Thibault @ 2022-05-17 14:42 UTC (permalink / raw)
  To: Daniel Kiper; +Cc: The development of GNU GRUB, bug-hurd

Daniel Kiper, le mar. 17 mai 2022 16:22:10 +0200, a ecrit:
> On Wed, Apr 27, 2022 at 11:00:29PM +0200, 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>
> >
> > Message-Id: <20220223233413.wkk66pxp5p2q2wrf@begin>
> >
> > ---
> > Difference with v2: formatting, using xmalloc instead of malloc.
> >
> > 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.
> >
> > diff --git a/grub-core/osdep/hurd/getroot.c b/grub-core/osdep/hurd/getroot.c
> > index c66b206fa..5f0e366d1 100644
> > --- a/grub-core/osdep/hurd/getroot.c
> > +++ b/grub-core/osdep/hurd/getroot.c
> > @@ -112,9 +112,21 @@ grub_util_find_hurd_root_device (const char *path)
> >    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;
> > +      size_t size;
> >        char *next;
> > -      ret = malloc (size);
> > +
> > +      if (dev_name[0] == '@')
> > +        {
> > +          /* non-bootstrap disk driver, the /dev/ entry is normally set up with
> > +           * the same @. */
> > +          char *next_name = strchr (dev_name, ':');
> > +
> > +          if (next_name)
> > +            dev_name = next_name + 1;
> > +        }
> > +
> > +      size = sizeof ("/dev/") - 1 + strlen (dev_name) + 1;
> > +      ret = xmalloc (size);
> >        next = stpncpy (ret, "/dev/", size);
> >        stpncpy (next, dev_name, size - (next - ret));
> >      }
> > diff --git a/grub-core/osdep/hurd/hostdisk.c b/grub-core/osdep/hurd/hostdisk.c
> > index c47b5a5ea..73c442ae5 100644
> > --- a/grub-core/osdep/hurd/hostdisk.c
> > +++ b/grub-core/osdep/hurd/hostdisk.c
> > @@ -87,6 +87,21 @@ grub_util_hurd_get_disk_info (const char *dev, grub_uint32_t *secsize, grub_disk
> >  	  *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 @. */
> > +	      char *next_path = strchr (*parent, ':');
> > +
> > +	      if (next_path)
> > +		{
> > +		  char *n = strdup (next_path + 1);
> 
> I think this should be xstrdup() instead of strdup(). I can fix this for
> you before push.

Ok, please do so :)

Samuel

> Otherwise Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
> 
> Daniel
> 
> > +		  free (*parent);
> > +		  *parent = n;
> > +		}
> > +	    }
> >  	}
> >      }
> >    if (offset)
> 


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2022-05-17 14:42 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-02-22 23:27 [PATCH] hurd: Support device entries with @/dev/disk: qualifier Samuel Thibault
2022-02-23 23:34 ` [PATCHv2] " Samuel Thibault
2022-04-27 15:04   ` Daniel Kiper
2022-04-27 21:00     ` [PATCHv3] " Samuel Thibault
2022-05-17 14:22       ` Daniel Kiper
2022-05-17 14:42         ` Samuel Thibault

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.