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