Module Name:    src
Committed By:   msaitoh
Date:           Sun Aug 18 13:21:40 UTC 2019

Modified Files:
        src/usr.sbin/sysinst [netbsd-9]: disklabel.c gpt.c mbr.c msg.mi.de
            msg.mi.en msg.mi.es msg.mi.fr msg.mi.pl partitions.c partitions.h

Log Message:
Pull up following revision(s) (requested by martin in ticket #78):
        usr.sbin/sysinst/gpt.c: revision 1.10
        usr.sbin/sysinst/disklabel.c: revision 1.12
        usr.sbin/sysinst/msg.mi.fr: revision 1.18
        usr.sbin/sysinst/msg.mi.de: revision 1.14
        usr.sbin/sysinst/partitions.c: revision 1.2
        usr.sbin/sysinst/msg.mi.es: revision 1.15
        usr.sbin/sysinst/msg.mi.pl: revision 1.21
        usr.sbin/sysinst/partitions.h: revision 1.6
        usr.sbin/sysinst/msg.mi.en: revision 1.20
        usr.sbin/sysinst/mbr.c: revision 1.20
On architectures that usually do MBR/disklabel, nevertheless deal with
pure/plain disklabel disks, and explicitly offer this as partitioning
option when bootability is not a concern.


To generate a diff of this commit:
cvs rdiff -u -r1.10.2.1 -r1.10.2.2 src/usr.sbin/sysinst/disklabel.c
cvs rdiff -u -r1.6.2.3 -r1.6.2.4 src/usr.sbin/sysinst/gpt.c
cvs rdiff -u -r1.19 -r1.19.2.1 src/usr.sbin/sysinst/mbr.c \
    src/usr.sbin/sysinst/msg.mi.en
cvs rdiff -u -r1.13 -r1.13.2.1 src/usr.sbin/sysinst/msg.mi.de
cvs rdiff -u -r1.14 -r1.14.2.1 src/usr.sbin/sysinst/msg.mi.es
cvs rdiff -u -r1.17 -r1.17.2.1 src/usr.sbin/sysinst/msg.mi.fr
cvs rdiff -u -r1.20 -r1.20.2.1 src/usr.sbin/sysinst/msg.mi.pl
cvs rdiff -u -r1.1 -r1.1.2.1 src/usr.sbin/sysinst/partitions.c
cvs rdiff -u -r1.4.2.1 -r1.4.2.2 src/usr.sbin/sysinst/partitions.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/usr.sbin/sysinst/disklabel.c
diff -u src/usr.sbin/sysinst/disklabel.c:1.10.2.1 src/usr.sbin/sysinst/disklabel.c:1.10.2.2
--- src/usr.sbin/sysinst/disklabel.c:1.10.2.1	Thu Aug  8 05:51:43 2019
+++ src/usr.sbin/sysinst/disklabel.c	Sun Aug 18 13:21:40 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: disklabel.c,v 1.10.2.1 2019/08/08 05:51:43 msaitoh Exp $	*/
+/*	$NetBSD: disklabel.c,v 1.10.2.2 2019/08/18 13:21:40 msaitoh Exp $	*/
 
 /*
  * Copyright 2018 The NetBSD Foundation, Inc.
@@ -164,7 +164,8 @@ disklabel_parts_new(const char *dev, dad
 }
 
 static struct disk_partitions *
-disklabel_parts_read(const char *disk, daddr_t start, daddr_t len)
+disklabel_parts_read(const char *disk, daddr_t start, daddr_t len,
+    const struct disk_partitioning_scheme *scheme)
 {
 	int fd;
 	char diskpath[MAXPATHLEN];
@@ -214,7 +215,7 @@ disklabel_parts_read(const char *disk, d
 
 	if (len > disklabel_parts.size_limit)
 		len = disklabel_parts.size_limit;
-	parts->dp.pscheme = &disklabel_parts;
+	parts->dp.pscheme = scheme;
 	parts->dp.disk = disk;
 	parts->dp.disk_start = start;
 	parts->dp.disk_size = parts->dp.free_space = len;

Index: src/usr.sbin/sysinst/gpt.c
diff -u src/usr.sbin/sysinst/gpt.c:1.6.2.3 src/usr.sbin/sysinst/gpt.c:1.6.2.4
--- src/usr.sbin/sysinst/gpt.c:1.6.2.3	Thu Aug  8 05:51:43 2019
+++ src/usr.sbin/sysinst/gpt.c	Sun Aug 18 13:21:40 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: gpt.c,v 1.6.2.3 2019/08/08 05:51:43 msaitoh Exp $	*/
+/*	$NetBSD: gpt.c,v 1.6.2.4 2019/08/18 13:21:40 msaitoh Exp $	*/
 
 /*
  * Copyright 2018 The NetBSD Foundation, Inc.
@@ -249,7 +249,8 @@ update_part_from_wedge_info(struct gpt_d
 }
 
 static struct disk_partitions *
-gpt_read_from_disk(const char *dev, daddr_t start, daddr_t len)
+gpt_read_from_disk(const char *dev, daddr_t start, daddr_t len,
+    const struct disk_partitioning_scheme *scheme)
 {
 	char diskpath[MAXPATHLEN];
 	int fd;
@@ -362,7 +363,7 @@ gpt_read_from_disk(const char *dev, dadd
 		return NULL;
 	}
 
-	parts->dp.pscheme = &gpt_parts;
+	parts->dp.pscheme = scheme;
 	parts->dp.disk = dev;
 	parts->dp.disk_start = start;
 	parts->dp.disk_size = disk_size;

Index: src/usr.sbin/sysinst/mbr.c
diff -u src/usr.sbin/sysinst/mbr.c:1.19 src/usr.sbin/sysinst/mbr.c:1.19.2.1
--- src/usr.sbin/sysinst/mbr.c:1.19	Fri Jul 26 08:18:47 2019
+++ src/usr.sbin/sysinst/mbr.c	Sun Aug 18 13:21:40 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: mbr.c,v 1.19 2019/07/26 08:18:47 martin Exp $ */
+/*	$NetBSD: mbr.c,v 1.19.2.1 2019/08/18 13:21:40 msaitoh Exp $ */
 
 /*
  * Copyright 1997 Piermont Information Systems Inc.
@@ -880,7 +880,8 @@ mbr_calc_free_space(struct mbr_disk_part
 }
 
 static struct disk_partitions *
-mbr_read_from_disk(const char *disk, daddr_t start, daddr_t len)
+mbr_read_from_disk(const char *disk, daddr_t start, daddr_t len,
+    const struct disk_partitioning_scheme *scheme)
 {
 	struct mbr_disk_partitions *parts;
 
@@ -892,7 +893,7 @@ mbr_read_from_disk(const char *disk, dad
 	if (!parts)
 		return NULL;
 
-	parts->dp.pscheme = &mbr_parts;
+	parts->dp.pscheme = scheme;
 	parts->dp.disk = disk;
 	if (len >= mbr_parts.size_limit)
 		len = mbr_parts.size_limit;
@@ -1629,7 +1630,8 @@ mbr_read_disklabel(struct disk_partition
 
 		if (!force_empty)
 			myparts->dlabel = disklabel_parts.read_from_disk(
-			    myparts->dp.disk, part.start, part.size);
+			    myparts->dp.disk, part.start, part.size,
+			    &disklabel_parts);
 
 		if (myparts->dlabel == NULL && part.size > 0) {
 			/* we just created the outer partitions? */
Index: src/usr.sbin/sysinst/msg.mi.en
diff -u src/usr.sbin/sysinst/msg.mi.en:1.19 src/usr.sbin/sysinst/msg.mi.en:1.19.2.1
--- src/usr.sbin/sysinst/msg.mi.en:1.19	Tue Jul 23 18:13:40 2019
+++ src/usr.sbin/sysinst/msg.mi.en	Sun Aug 18 13:21:40 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: msg.mi.en,v 1.19 2019/07/23 18:13:40 martin Exp $	*/
+/*	$NetBSD: msg.mi.en,v 1.19.2.1 2019/08/18 13:21:40 msaitoh Exp $	*/
 
 /*
  * Copyright 1997 Piermont Information Systems Inc.
@@ -1192,6 +1192,11 @@ Do you want to use that?}
 
 message parttype_disklabel {BSD disklabel}
 message parttype_disklabel_short {disklabel}
+/*
+ * This is used on architectures with MBR above disklabel when there is
+ * no MBR on a disk.
+ */
+message parttype_only_disklabel {disklabel (NetBSD only)}
 
 message select_part_scheme
 {The disk seems not to have been partitioned before. Please select

Index: src/usr.sbin/sysinst/msg.mi.de
diff -u src/usr.sbin/sysinst/msg.mi.de:1.13 src/usr.sbin/sysinst/msg.mi.de:1.13.2.1
--- src/usr.sbin/sysinst/msg.mi.de:1.13	Tue Jul 23 18:13:40 2019
+++ src/usr.sbin/sysinst/msg.mi.de	Sun Aug 18 13:21:40 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: msg.mi.de,v 1.13 2019/07/23 18:13:40 martin Exp $	*/
+/*	$NetBSD: msg.mi.de,v 1.13.2.1 2019/08/18 13:21:40 msaitoh Exp $	*/
 
 /*
  * Copyright 1997 Piermont Information Systems Inc.
@@ -1263,6 +1263,11 @@ Möchten Sie diese benutzen?}
 
 message parttype_disklabel {BSD disklabel}
 message parttype_disklabel_short {disklabel}
+/*
+ * This is used on architectures with MBR above disklabel when there is
+ * no MBR on a disk.
+ */
+message parttype_only_disklabel {disklabel (nur NetBSD)}
 
 message select_part_scheme
 {Dieses Gerät wurde anscheinend noch nicht partitioniert. 

Index: src/usr.sbin/sysinst/msg.mi.es
diff -u src/usr.sbin/sysinst/msg.mi.es:1.14 src/usr.sbin/sysinst/msg.mi.es:1.14.2.1
--- src/usr.sbin/sysinst/msg.mi.es:1.14	Tue Jul 23 18:13:40 2019
+++ src/usr.sbin/sysinst/msg.mi.es	Sun Aug 18 13:21:40 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: msg.mi.es,v 1.14 2019/07/23 18:13:40 martin Exp $	*/
+/*	$NetBSD: msg.mi.es,v 1.14.2.1 2019/08/18 13:21:40 msaitoh Exp $	*/
 
 /*
  * Copyright 1997 Piermont Information Systems Inc.
@@ -1242,6 +1242,11 @@ Do you want to use that?}
 
 message parttype_disklabel {BSD disklabel}
 message parttype_disklabel_short {disklabel}
+/*
+ * This is used on architectures with MBR above disklabel when there is
+ * no MBR on a disk.
+ */
+message parttype_only_disklabel {disklabel (NetBSD only)}
 
 message select_part_scheme
 {The disk seems not to have been partitioned before. Please select

Index: src/usr.sbin/sysinst/msg.mi.fr
diff -u src/usr.sbin/sysinst/msg.mi.fr:1.17 src/usr.sbin/sysinst/msg.mi.fr:1.17.2.1
--- src/usr.sbin/sysinst/msg.mi.fr:1.17	Tue Jul 23 18:13:40 2019
+++ src/usr.sbin/sysinst/msg.mi.fr	Sun Aug 18 13:21:40 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: msg.mi.fr,v 1.17 2019/07/23 18:13:40 martin Exp $	*/
+/*	$NetBSD: msg.mi.fr,v 1.17.2.1 2019/08/18 13:21:40 msaitoh Exp $	*/
 
 /*
  * Copyright 1997 Piermont Information Systems Inc.
@@ -1295,6 +1295,11 @@ Do you want to use that?}
 
 message parttype_disklabel {BSD disklabel}
 message parttype_disklabel_short {disklabel}
+/*
+ * This is used on architectures with MBR above disklabel when there is
+ * no MBR on a disk.
+ */
+message parttype_only_disklabel {disklabel (NetBSD only)}
 
 message select_part_scheme
 {The disk seems not to have been partitioned before. Please select

Index: src/usr.sbin/sysinst/msg.mi.pl
diff -u src/usr.sbin/sysinst/msg.mi.pl:1.20 src/usr.sbin/sysinst/msg.mi.pl:1.20.2.1
--- src/usr.sbin/sysinst/msg.mi.pl:1.20	Tue Jul 23 18:13:40 2019
+++ src/usr.sbin/sysinst/msg.mi.pl	Sun Aug 18 13:21:40 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: msg.mi.pl,v 1.20 2019/07/23 18:13:40 martin Exp $	*/
+/*	$NetBSD: msg.mi.pl,v 1.20.2.1 2019/08/18 13:21:40 msaitoh Exp $	*/
 /*	Based on english version: */
 /*	NetBSD: msg.mi.pl,v 1.36 2004/04/17 18:55:35 atatat Exp       */
 
@@ -1188,6 +1188,11 @@ Chcesz jej uzyc?}
 
 message parttype_disklabel {disklabel BSD}
 message parttype_disklabel_short {disklabel}
+/*
+ * This is used on architectures with MBR above disklabel when there is
+ * no MBR on a disk.
+ */
+message parttype_only_disklabel {disklabel (NetBSD only)}
 
 message select_part_scheme
 {Ten dysk nie byl wczesniej partycjonowany. Wybierz typ tablicy

Index: src/usr.sbin/sysinst/partitions.c
diff -u src/usr.sbin/sysinst/partitions.c:1.1 src/usr.sbin/sysinst/partitions.c:1.1.2.1
--- src/usr.sbin/sysinst/partitions.c:1.1	Wed Jun 12 06:20:18 2019
+++ src/usr.sbin/sysinst/partitions.c	Sun Aug 18 13:21:40 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: partitions.c,v 1.1 2019/06/12 06:20:18 martin Exp $	*/
+/*	$NetBSD: partitions.c,v 1.1.2.1 2019/08/18 13:21:40 msaitoh Exp $	*/
 
 /*
  * Copyright 2018 The NetBSD Foundation, Inc.
@@ -54,7 +54,7 @@ partitions_read_disk(const char *dev, da
 
 	for (ps = available_part_schemes; *ps; ps++) {
 		struct disk_partitions *parts =
-		    (*ps)->read_from_disk(dev, 0, disk_size);
+		    (*ps)->read_from_disk(dev, 0, disk_size, *ps);
 		if (parts)
 			return parts;
 	}
@@ -78,8 +78,23 @@ extern const struct disk_partitioning_sc
 #ifdef HAVE_MBR
 extern const struct disk_partitioning_scheme mbr_parts;
 #endif
-#if RAW_PART == 2	/* only available as primary on some architectures */
-const struct disk_partitioning_scheme disklabel_parts;
+
+extern const struct disk_partitioning_scheme disklabel_parts;
+#if RAW_PART != 2
+static struct disk_partitioning_scheme only_disklabel_parts;
+
+/*
+ * If not overriden by MD code, we can not boot from plain
+ * disklabel disks (w/o MBR).
+ */
+static bool have_only_disklabel_boot_support(const char *disk)
+{
+#ifdef HAVE_PLAIN_DISKLABEL_BOOT
+	return HAVE_PLAIN_DISKLABEL_BOOT(disk);
+#else
+	return false;
+#endif
+}
 #endif
 
 /*
@@ -104,6 +119,9 @@ static const struct part_scheme_desc all
 #ifdef HAVE_MBR
 		{ NULL, &mbr_parts },
 #endif
+#if RAW_PART != 2	/* "whole disk NetBSD" disklabel variant */
+		{ NULL, &only_disklabel_parts },
+#endif
 	};
 
 	size_t i, avail;
@@ -113,6 +131,15 @@ static const struct part_scheme_desc all
 
 	check_available_binaries();
 
+#if RAW_PART != 2
+	/* generate a variant of disklabel w/o parent scheme */
+	only_disklabel_parts = disklabel_parts;
+	only_disklabel_parts.name = MSG_parttype_only_disklabel;
+	only_disklabel_parts.have_boot_support =
+	    have_only_disklabel_boot_support;
+#endif
+
+
 	is_available = malloc(all_cnt);
 
 	for (avail = i = 0; i < all_cnt; i++) {

Index: src/usr.sbin/sysinst/partitions.h
diff -u src/usr.sbin/sysinst/partitions.h:1.4.2.1 src/usr.sbin/sysinst/partitions.h:1.4.2.2
--- src/usr.sbin/sysinst/partitions.h:1.4.2.1	Thu Aug  8 05:51:43 2019
+++ src/usr.sbin/sysinst/partitions.h	Sun Aug 18 13:21:40 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: partitions.h,v 1.4.2.1 2019/08/08 05:51:43 msaitoh Exp $	*/
+/*	$NetBSD: partitions.h,v 1.4.2.2 2019/08/18 13:21:40 msaitoh Exp $	*/
 
 /*
  * Copyright 2018 The NetBSD Foundation, Inc.
@@ -413,7 +413,8 @@ struct disk_partitioning_scheme {
 	 * disk.
 	 */
 	struct disk_partitions * (*read_from_disk)(const char *,
-	    daddr_t start, daddr_t len);
+	    daddr_t start, daddr_t len, const struct
+	    disk_partitioning_scheme *);
 
 	/*
 	 * Set up all internal data for a new disk

Reply via email to