Source-Changes-HG archive

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

[src/trunk]: src/sys/arch/i386/stand Do not use NAME=label syntax when label ...



details:   https://anonhg.NetBSD.org/src/rev/afa3b3140326
branches:  trunk
changeset: 847293:afa3b3140326
user:      manu <manu%NetBSD.org@localhost>
date:      Tue Dec 17 01:37:52 2019 +0000

description:
Do not use NAME=label syntax when label are empty

When booting sysinst from UEFI, it defaults to a GPT installation
where partition have no labels. Bootstrap used the NAME=label partition
anyway, with the result that both EFI and FFS root partition had
the same name "NAME=" and could not be distinguished. The first matching
partition for the name was used, and bootstrap looked for the kernel
in the EFI partition.

We fix that by not using NAME=label names for partition when label
is empty. In that case we revert to old syntax such as hd0b

diffstat:

 sys/arch/i386/stand/efiboot/efidisk.c |   6 +++---
 sys/arch/i386/stand/lib/biosdisk.c    |  12 ++++++++----
 2 files changed, 11 insertions(+), 7 deletions(-)

diffs (67 lines):

diff -r dc67410ada4d -r afa3b3140326 sys/arch/i386/stand/efiboot/efidisk.c
--- a/sys/arch/i386/stand/efiboot/efidisk.c     Tue Dec 17 00:59:14 2019 +0000
+++ b/sys/arch/i386/stand/efiboot/efidisk.c     Tue Dec 17 01:37:52 2019 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: efidisk.c,v 1.8 2019/08/18 02:18:24 manu Exp $ */
+/*     $NetBSD: efidisk.c,v 1.9 2019/12/17 01:37:52 manu Exp $ */
 
 /*-
  * Copyright (c) 2016 Kimihiro Nonaka <nonaka%netbsd.org@localhost>
@@ -253,7 +253,7 @@
                                printf(" ");
                                first = false;
                        }
-                       if (part[i].part_name != NULL)
+                       if (part[i].part_name && part[i].part_name[0])
                                printf(" NAME=%s(", part[i].part_name);
                        else
                                printf(" hd%d%c(", edi->dev & 0x7f, i + 'a');
@@ -308,7 +308,7 @@
                                printf(" ");
                                first = 0;
                        }
-                       if (part[j].part_name != NULL)
+                       if (part[j].part_name && part[j].part_name[0])
                                printf(" NAME=%s(", part[j].part_name);
                        else
                                printf(" raid%d%c(",
diff -r dc67410ada4d -r afa3b3140326 sys/arch/i386/stand/lib/biosdisk.c
--- a/sys/arch/i386/stand/lib/biosdisk.c        Tue Dec 17 00:59:14 2019 +0000
+++ b/sys/arch/i386/stand/lib/biosdisk.c        Tue Dec 17 01:37:52 2019 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: biosdisk.c,v 1.53 2019/12/10 02:02:47 manu Exp $       */
+/*     $NetBSD: biosdisk.c,v 1.54 2019/12/17 01:37:53 manu Exp $       */
 
 /*
  * Copyright (c) 1996, 1998
@@ -908,7 +908,8 @@
                                first = 0;
                        }
 #ifndef NO_GPT
-                       if (d->part[part].part_name != NULL)
+                       if (d->part[part].part_name &&
+                           d->part[part].part_name[0])
                                printf(" NAME=%s(", d->part[part].part_name);
                        else
 #endif
@@ -987,7 +988,8 @@
                                first = 0;
                        }
 #ifndef NO_GPT
-                       if (d->part[part].part_name != NULL)
+                       if (d->part[part].part_name &&
+                           d->part[part].part_name[0])
                                printf(" NAME=%s(", d->part[part].part_name);
                        else
 #endif
@@ -1095,7 +1097,9 @@
 
                *partition = boot_part;
 #ifndef NO_GPT
-               if (part_name && d->part[boot_part].part_name) {
+               if (part_name &&
+                   d->part[boot_part].part_name &&
+                   d->part[boot_part].part_name[0]) {
                        strlcpy(namebuf, d->part[boot_part].part_name,
                                BIOSDISK_PART_NAME_LEN);
                        *part_name = namebuf;



Home | Main Index | Thread Index | Old Index