All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] NetBSD boot disk info
@ 2013-07-20  0:06 Grégoire Sutre
  0 siblings, 0 replies; only message in thread
From: Grégoire Sutre @ 2013-07-20  0:06 UTC (permalink / raw)
  To: The development of GNU GRUB

[-- Attachment #1: Type: text/plain, Size: 289 bytes --]

Hi,

The attached patch improves knetbsd regarding boot disk info:

- the boot disk info is filled unconditionally,
- toplevel BSD disk labels are not ignored anymore.

This makes knetbsd's behavior closer to that of the NetBSD
native boot loader with respect to boot disk info.

Grégoire

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: netbsd-bootdisk.diff --]
[-- Type: text/x-patch; name="netbsd-bootdisk.diff", Size: 2183 bytes --]

=== modified file 'ChangeLog'
--- ChangeLog	2013-07-18 15:59:14 +0000
+++ ChangeLog	2013-07-19 22:51:04 +0000
@@ -1,3 +1,8 @@
+2013-07-20  Grégoire Sutre  <gregoire.sutre@gmail.com>
+
+	* grub-core/loader/i386/bsd.c (grub_netbsd_add_boot_disk_and_wedge):
+	Always fill bootdisk info and improve check for NetBSD disklabel.
+
 2013-07-18  Leif Lindholm  <leif.lindholm@arm.com>
 2013-07-18  Francesco Lavra  <francescolavra.fl@gmail.com>
 2013-07-18  Vladimir Serbinenko  <phcoder@gmail.com>

=== modified file 'grub-core/loader/i386/bsd.c'
--- grub-core/loader/i386/bsd.c	2013-04-28 13:18:50 +0000
+++ grub-core/loader/i386/bsd.c	2013-07-19 22:44:12 +0000
@@ -1088,22 +1088,30 @@ grub_netbsd_add_boot_disk_and_wedge (voi
     grub_bsd_add_meta (NETBSD_BTINFO_BOOTWEDGE, &biw, sizeof (biw));
   }
 
-  /* Fill bootdisk if this a NetBSD disk label.  */
-  if (part->partmap != NULL &&
-      (grub_strcmp (part->partmap->name, "netbsd") == 0) &&
-      buf.label.magic == grub_cpu_to_le32 (GRUB_PC_PARTITION_BSD_LABEL_MAGIC))
-    {
-      struct grub_netbsd_btinfo_bootdisk bid;
+  /* Fill bootdisk.  */
+  {
+    struct grub_netbsd_btinfo_bootdisk bid;
 
-      grub_memset (&bid, 0, sizeof (bid));
-      bid.labelsector = partmapsector;
-      bid.label.type = buf.label.type;
-      bid.label.checksum = buf.label.checksum;
-      memcpy (bid.label.packname, buf.label.packname, 16);
-      bid.biosdev = biosdev;
-      bid.partition = part->number;
-      grub_bsd_add_meta (NETBSD_BTINFO_BOOTDISK, &bid, sizeof (bid));
-    }
+    grub_memset (&bid, 0, sizeof (bid));
+    /* Check for a NetBSD disk label.  */
+    if (part->partmap != NULL &&
+	(grub_strcmp (part->partmap->name, "netbsd") == 0 ||
+	 (part->parent == NULL && grub_strcmp (part->partmap->name, "bsd") == 0)))
+      {
+	bid.labelsector = partmapsector;
+	bid.label.type = buf.label.type;
+	bid.label.checksum = buf.label.checksum;
+	memcpy (bid.label.packname, buf.label.packname, 16);
+      }
+    else
+      {
+	bid.labelsector = -1;
+      }
+    bid.biosdev = biosdev;
+    bid.partition = part->number;
+
+    grub_bsd_add_meta (NETBSD_BTINFO_BOOTDISK, &bid, sizeof (bid));
+  }
 
 fail:
   if (dev)


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2013-07-20  0:06 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-07-20  0:06 [PATCH] NetBSD boot disk info Grégoire Sutre

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.