Module Name: src
Committed By: martin
Date: Mon Oct 12 16:14:37 UTC 2020
Modified Files:
src/usr.sbin/sysinst: bsddisklabel.c defs.h disklabel.c gpt.c install.c
mbr.c mbr.h msg.mi.de msg.mi.en msg.mi.es msg.mi.fr msg.mi.pl
part_edit.c partitions.h
src/usr.sbin/sysinst/arch/acorn32: md.c
src/usr.sbin/sysinst/arch/alpha: md.c
src/usr.sbin/sysinst/arch/amiga: md.c
src/usr.sbin/sysinst/arch/arc: md.c
src/usr.sbin/sysinst/arch/atari: md.c
src/usr.sbin/sysinst/arch/bebox: md.c
src/usr.sbin/sysinst/arch/cats: md.c
src/usr.sbin/sysinst/arch/cobalt: md.c
src/usr.sbin/sysinst/arch/dummy: md.c
src/usr.sbin/sysinst/arch/emips: md.c
src/usr.sbin/sysinst/arch/evbarm: md.c
src/usr.sbin/sysinst/arch/evbmips: md.c
src/usr.sbin/sysinst/arch/evbppc: md.c
src/usr.sbin/sysinst/arch/evbsh3: md.c
src/usr.sbin/sysinst/arch/ews4800mips: md.c
src/usr.sbin/sysinst/arch/hp300: md.c
src/usr.sbin/sysinst/arch/hpcarm: md.c
src/usr.sbin/sysinst/arch/hpcmips: md.c
src/usr.sbin/sysinst/arch/hpcsh: md.c
src/usr.sbin/sysinst/arch/hppa: md.c
src/usr.sbin/sysinst/arch/i386: md.c
src/usr.sbin/sysinst/arch/landisk: md.c
src/usr.sbin/sysinst/arch/luna68k: md.c
src/usr.sbin/sysinst/arch/mac68k: md.c
src/usr.sbin/sysinst/arch/macppc: md.c
src/usr.sbin/sysinst/arch/mipsco: md.c
src/usr.sbin/sysinst/arch/mvme68k: md.c
src/usr.sbin/sysinst/arch/news68k: md.c
src/usr.sbin/sysinst/arch/newsmips: md.c
src/usr.sbin/sysinst/arch/ofppc: md.c
src/usr.sbin/sysinst/arch/playstation2: md.c
src/usr.sbin/sysinst/arch/pmax: md.c
src/usr.sbin/sysinst/arch/prep: md.c
src/usr.sbin/sysinst/arch/sandpoint: md.c
src/usr.sbin/sysinst/arch/sgimips: md.c
src/usr.sbin/sysinst/arch/shark: md.c
src/usr.sbin/sysinst/arch/sparc: md.c
src/usr.sbin/sysinst/arch/sparc64: md.c
src/usr.sbin/sysinst/arch/vax: md.c
src/usr.sbin/sysinst/arch/x68k: md.c
src/usr.sbin/sysinst/arch/zaurus: md.c
Log Message:
PR 55536: when we find existing partition tables and have alternative
formats available, offer to delete partitions and create new ones from
scratch (in some other or the same on-disk format).
To generate a diff of this commit:
cvs rdiff -u -r1.51 -r1.52 src/usr.sbin/sysinst/bsddisklabel.c
cvs rdiff -u -r1.65 -r1.66 src/usr.sbin/sysinst/defs.h
cvs rdiff -u -r1.40 -r1.41 src/usr.sbin/sysinst/disklabel.c
cvs rdiff -u -r1.19 -r1.20 src/usr.sbin/sysinst/gpt.c
cvs rdiff -u -r1.17 -r1.18 src/usr.sbin/sysinst/install.c \
src/usr.sbin/sysinst/partitions.h
cvs rdiff -u -r1.35 -r1.36 src/usr.sbin/sysinst/mbr.c
cvs rdiff -u -r1.5 -r1.6 src/usr.sbin/sysinst/mbr.h
cvs rdiff -u -r1.22 -r1.23 src/usr.sbin/sysinst/msg.mi.de \
src/usr.sbin/sysinst/part_edit.c
cvs rdiff -u -r1.30 -r1.31 src/usr.sbin/sysinst/msg.mi.en \
src/usr.sbin/sysinst/msg.mi.pl
cvs rdiff -u -r1.24 -r1.25 src/usr.sbin/sysinst/msg.mi.es
cvs rdiff -u -r1.29 -r1.30 src/usr.sbin/sysinst/msg.mi.fr
cvs rdiff -u -r1.6 -r1.7 src/usr.sbin/sysinst/arch/acorn32/md.c
cvs rdiff -u -r1.8 -r1.9 src/usr.sbin/sysinst/arch/alpha/md.c
cvs rdiff -u -r1.5 -r1.6 src/usr.sbin/sysinst/arch/amiga/md.c
cvs rdiff -u -r1.12 -r1.13 src/usr.sbin/sysinst/arch/arc/md.c
cvs rdiff -u -r1.6 -r1.7 src/usr.sbin/sysinst/arch/atari/md.c
cvs rdiff -u -r1.8 -r1.9 src/usr.sbin/sysinst/arch/bebox/md.c
cvs rdiff -u -r1.4 -r1.5 src/usr.sbin/sysinst/arch/cats/md.c
cvs rdiff -u -r1.13 -r1.14 src/usr.sbin/sysinst/arch/cobalt/md.c
cvs rdiff -u -r1.5 -r1.6 src/usr.sbin/sysinst/arch/dummy/md.c
cvs rdiff -u -r1.8 -r1.9 src/usr.sbin/sysinst/arch/emips/md.c
cvs rdiff -u -r1.16 -r1.17 src/usr.sbin/sysinst/arch/evbarm/md.c
cvs rdiff -u -r1.8 -r1.9 src/usr.sbin/sysinst/arch/evbmips/md.c
cvs rdiff -u -r1.8 -r1.9 src/usr.sbin/sysinst/arch/evbppc/md.c
cvs rdiff -u -r1.5 -r1.6 src/usr.sbin/sysinst/arch/evbsh3/md.c
cvs rdiff -u -r1.6 -r1.7 src/usr.sbin/sysinst/arch/ews4800mips/md.c
cvs rdiff -u -r1.10 -r1.11 src/usr.sbin/sysinst/arch/hp300/md.c
cvs rdiff -u -r1.8 -r1.9 src/usr.sbin/sysinst/arch/hpcarm/md.c
cvs rdiff -u -r1.8 -r1.9 src/usr.sbin/sysinst/arch/hpcmips/md.c
cvs rdiff -u -r1.9 -r1.10 src/usr.sbin/sysinst/arch/hpcsh/md.c
cvs rdiff -u -r1.7 -r1.8 src/usr.sbin/sysinst/arch/hppa/md.c
cvs rdiff -u -r1.31 -r1.32 src/usr.sbin/sysinst/arch/i386/md.c
cvs rdiff -u -r1.13 -r1.14 src/usr.sbin/sysinst/arch/landisk/md.c
cvs rdiff -u -r1.8 -r1.9 src/usr.sbin/sysinst/arch/luna68k/md.c
cvs rdiff -u -r1.9 -r1.10 src/usr.sbin/sysinst/arch/mac68k/md.c
cvs rdiff -u -r1.5 -r1.6 src/usr.sbin/sysinst/arch/macppc/md.c
cvs rdiff -u -r1.7 -r1.8 src/usr.sbin/sysinst/arch/mipsco/md.c
cvs rdiff -u -r1.10 -r1.11 src/usr.sbin/sysinst/arch/mvme68k/md.c
cvs rdiff -u -r1.6 -r1.7 src/usr.sbin/sysinst/arch/news68k/md.c
cvs rdiff -u -r1.5 -r1.6 src/usr.sbin/sysinst/arch/newsmips/md.c
cvs rdiff -u -r1.10 -r1.11 src/usr.sbin/sysinst/arch/ofppc/md.c
cvs rdiff -u -r1.8 -r1.9 src/usr.sbin/sysinst/arch/playstation2/md.c
cvs rdiff -u -r1.7 -r1.8 src/usr.sbin/sysinst/arch/pmax/md.c
cvs rdiff -u -r1.12 -r1.13 src/usr.sbin/sysinst/arch/prep/md.c
cvs rdiff -u -r1.8 -r1.9 src/usr.sbin/sysinst/arch/sandpoint/md.c
cvs rdiff -u -r1.8 -r1.9 src/usr.sbin/sysinst/arch/sgimips/md.c
cvs rdiff -u -r1.5 -r1.6 src/usr.sbin/sysinst/arch/shark/md.c
cvs rdiff -u -r1.5 -r1.6 src/usr.sbin/sysinst/arch/sparc/md.c
cvs rdiff -u -r1.5 -r1.6 src/usr.sbin/sysinst/arch/sparc64/md.c
cvs rdiff -u -r1.6 -r1.7 src/usr.sbin/sysinst/arch/vax/md.c
cvs rdiff -u -r1.10 -r1.11 src/usr.sbin/sysinst/arch/x68k/md.c
cvs rdiff -u -r1.8 -r1.9 src/usr.sbin/sysinst/arch/zaurus/md.c
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/bsddisklabel.c
diff -u src/usr.sbin/sysinst/bsddisklabel.c:1.51 src/usr.sbin/sysinst/bsddisklabel.c:1.52
--- src/usr.sbin/sysinst/bsddisklabel.c:1.51 Mon Oct 12 12:17:29 2020
+++ src/usr.sbin/sysinst/bsddisklabel.c Mon Oct 12 16:14:32 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: bsddisklabel.c,v 1.51 2020/10/12 12:17:29 martin Exp $ */
+/* $NetBSD: bsddisklabel.c,v 1.52 2020/10/12 16:14:32 martin Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@@ -755,6 +755,13 @@ set_keep_existing(menudesc *m, void *arg
}
static int
+set_switch_scheme(menudesc *m, void *arg)
+{
+ ((arg_rep_int*)arg)->rv = LY_OTHERSCHEME;
+ return 0;
+}
+
+static int
set_edit_part_sizes(menudesc *m, void *arg)
{
((arg_rep_int*)arg)->rv = LY_SETSIZES;
@@ -802,14 +809,14 @@ ask_layout(struct disk_partitions *parts
const char *args[2];
int menu;
size_t num_opts;
- menu_ent options[3], *opt;
+ menu_ent options[4], *opt;
args[0] = msg_string(parts->pscheme->name);
args[1] = msg_string(parts->pscheme->short_name);
ai.args.argv = args;
ai.args.argc = 2;
- ai.rv = LY_SETSIZES;
-
+ ai.rv = LY_ERROR;
+
memset(options, 0, sizeof(options));
num_opts = 0;
opt = &options[0];
@@ -833,8 +840,17 @@ ask_layout(struct disk_partitions *parts
opt++;
num_opts++;
+ if (have_existing && num_available_part_schemes > 1 &&
+ parts->parent == NULL) {
+ opt->opt_name = MSG_Use_Different_Part_Scheme;
+ opt->opt_flags = OPT_EXIT;
+ opt->opt_action = set_switch_scheme;
+ opt++;
+ num_opts++;
+ }
+
menu = new_menu(MSG_Select_your_choice, options, num_opts,
- -1, -10, 0, 0, MC_NOEXITOPT, NULL, NULL, NULL, NULL, NULL);
+ -1, -10, 0, 0, 0, NULL, NULL, NULL, NULL, MSG_cancel);
if (menu != -1) {
get_menudesc(menu)->expand_act = expand_all_option_texts;
process_menu(menu, &ai);
@@ -1692,10 +1708,10 @@ edit_with_defaults(struct disk_partition
/*
* md back-end code for menu-driven BSD disklabel editor.
- * returns 0 on failure, 1 on success.
+ * returns 0 on failure, 1 on success, -1 for restart.
* fills the install target with a list for newfs/fstab.
*/
-bool
+int
make_bsd_partitions(struct install_partition_desc *install)
{
struct disk_partitions *parts = pm->parts;
@@ -1706,16 +1722,15 @@ make_bsd_partitions(struct install_parti
bool have_existing;
if (pm && pm->no_part && parts == NULL)
- return true;
-
+ return 1;
if (parts == NULL) {
pscheme = select_part_scheme(pm, NULL, !pm->no_mbr, NULL);
if (pscheme == NULL)
- return false;
+ return 0;
parts = pscheme->create_new_for_disk(pm->diskdev,
0, pm->dlsize, true, NULL);
if (parts == NULL)
- return false;
+ return 0;
pm->parts = parts;
} else {
pscheme = parts->pscheme;
@@ -1734,19 +1749,13 @@ make_bsd_partitions(struct install_parti
have_existing = check_existing_netbsd(parts);
/*
- * Initialize global variables that track space used on this disk.
+ * Make sure the cylinder size multiplier/divisor and disk sieze are
+ * valid
*/
- if (pm->ptsize == 0)
- pm->ptsize = pm->dlsize - pm->ptstart;
- if (pm->dlsize == 0)
- pm->dlsize = pm->ptstart + pm->ptsize;
-
- if (logfp) fprintf(logfp, "dlsize=%" PRId64 " ptsize=%" PRId64
- " ptstart=%" PRId64 "\n",
- pm->dlsize, pm->ptsize, pm->ptstart);
-
if (pm->current_cylsize == 0)
pm->current_cylsize = pm->dlcylsize;
+ if (pm->ptsize == 0)
+ pm->ptsize = pm->dlsize;
/* Ask for layout type -- standard or special */
if (partman_go == 0) {
@@ -1776,6 +1785,8 @@ make_bsd_partitions(struct install_parti
bsd_size, min_size, x_size);
msg_display_add("\n\n");
layoutkind = ask_layout(parts, have_existing);
+ if (layoutkind == LY_ERROR)
+ return 0;
}
if (layoutkind == LY_USEDEFAULT || layoutkind == LY_SETSIZES) {
@@ -1787,14 +1798,17 @@ make_bsd_partitions(struct install_parti
parts->parent->pscheme->guess_install_target(
parts->parent, &p_start, &p_size);
}
- if (layoutkind == LY_USEDEFAULT) {
+ if (layoutkind == LY_OTHERSCHEME) {
+ parts->pscheme->destroy_part_scheme(parts);
+ return -1;
+ } else if (layoutkind == LY_USEDEFAULT) {
replace_by_default(parts, p_start, p_size,
&wanted);
} else if (layoutkind == LY_SETSIZES) {
if (!edit_with_defaults(parts, p_start, p_size,
&wanted)) {
free_usage_set(&wanted);
- return false;
+ return 0;
}
} else {
usage_set_from_parts(&wanted, parts);
@@ -1889,7 +1903,7 @@ make_bsd_partitions(struct install_parti
if (rv == 0) {
msg_display(MSG_abort_part);
free_usage_set(&wanted);
- return false;
+ return 0;
}
/* update install infos */
install->num = wanted.num;
@@ -1907,7 +1921,7 @@ make_bsd_partitions(struct install_parti
free_usage_set(&wanted);
/* Everything looks OK. */
- return true;
+ return 1;
}
#ifndef MD_NEED_BOOTBLOCK
Index: src/usr.sbin/sysinst/defs.h
diff -u src/usr.sbin/sysinst/defs.h:1.65 src/usr.sbin/sysinst/defs.h:1.66
--- src/usr.sbin/sysinst/defs.h:1.65 Fri Oct 9 18:33:00 2020
+++ src/usr.sbin/sysinst/defs.h Mon Oct 12 16:14:32 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: defs.h,v 1.65 2020/10/09 18:33:00 martin Exp $ */
+/* $NetBSD: defs.h,v 1.66 2020/10/12 16:14:32 martin Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@@ -103,7 +103,15 @@ const char *getfslabelname(uint, uint);
#define RUN_XFER_DIR 0x0200 /* cd to xfer_dir in child */
/* for bsddisklabel.c */
-enum layout_type { LY_KEEPEXISTING, LY_SETSIZES, LY_USEDEFAULT, LY_USEFULL };
+enum layout_type {
+ LY_KEEPEXISTING, /* keep exisiting partitions */
+ LY_OTHERSCHEME, /* delete all, select new partitioning scheme */
+ LY_SETSIZES, /* edit sizes */
+ LY_USEDEFAULT, /* use default sizes */
+ LY_USEFULL, /* use full disk for NetBSD */
+ LY_ERROR /* used for "abort" in menu */
+};
+
enum setup_type { SY_NEWRAID, SY_NEWCGD, SY_NEWLVM };
/* Installation sets */
@@ -619,7 +627,8 @@ void md_init_set_status(int); /* SFLAG_f
/* MD functions if user selects install - in order called */
bool md_get_info(struct install_partition_desc*);
-bool md_make_bsd_partitions(struct install_partition_desc*);
+/* returns -1 to restart partitioning, 0 for error, 1 for success */
+int md_make_bsd_partitions(struct install_partition_desc*);
bool md_check_partitions(struct install_partition_desc*);
#ifdef HAVE_GPT
/*
@@ -786,7 +795,13 @@ int err_msg_win(const char*);
const struct disk_partitioning_scheme *select_part_scheme(struct pm_devs *dev,
const struct disk_partitioning_scheme *skip, bool bootable,
const char *title);
-bool edit_outer_parts(struct disk_partitions*);
+/*
+ * return value:
+ * 0 -> abort
+ * 1 -> ok, continue
+ * -1 -> partitions have been deleted, start from scratch
+*/
+int edit_outer_parts(struct disk_partitions*);
bool parts_use_wholedisk(struct disk_partitions*,
size_t add_ext_parts, const struct disk_part_info *ext_parts);
@@ -952,7 +967,8 @@ extern int have_raid, have_vnd, have_cgd
void check_available_binaries(void);
/* from bsddisklabel.c */
-bool make_bsd_partitions(struct install_partition_desc*);
+/* returns -1 to restart partitioning, 0 for error, 1 for success */
+int make_bsd_partitions(struct install_partition_desc*);
void set_ptn_titles(menudesc *, int, void *);
int set_ptn_size(menudesc *, void *);
bool get_ptn_sizes(struct partition_usage_set*);
Index: src/usr.sbin/sysinst/disklabel.c
diff -u src/usr.sbin/sysinst/disklabel.c:1.40 src/usr.sbin/sysinst/disklabel.c:1.41
--- src/usr.sbin/sysinst/disklabel.c:1.40 Sat Oct 3 18:54:18 2020
+++ src/usr.sbin/sysinst/disklabel.c Mon Oct 12 16:14:32 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: disklabel.c,v 1.40 2020/10/03 18:54:18 martin Exp $ */
+/* $NetBSD: disklabel.c,v 1.41 2020/10/12 16:14:32 martin Exp $ */
/*
* Copyright 2018 The NetBSD Foundation, Inc.
@@ -1259,6 +1259,14 @@ disklabel_free(struct disk_partitions *a
free(arg);
}
+static void
+disklabel_destroy_part_scheme(struct disk_partitions *arg)
+{
+
+ run_program(RUN_SILENT, "disklabel -D %s", arg->disk);
+ free(arg);
+}
+
const struct disk_partitioning_scheme
disklabel_parts = {
.name = MSG_parttype_disklabel,
@@ -1297,4 +1305,5 @@ disklabel_parts = {
.get_free_spaces = disklabel_get_free_spaces,
.get_part_device = disklabel_get_part_device,
.free = disklabel_free,
+ .destroy_part_scheme = disklabel_destroy_part_scheme,
};
Index: src/usr.sbin/sysinst/gpt.c
diff -u src/usr.sbin/sysinst/gpt.c:1.19 src/usr.sbin/sysinst/gpt.c:1.20
--- src/usr.sbin/sysinst/gpt.c:1.19 Sat Oct 3 18:54:18 2020
+++ src/usr.sbin/sysinst/gpt.c Mon Oct 12 16:14:32 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: gpt.c,v 1.19 2020/10/03 18:54:18 martin Exp $ */
+/* $NetBSD: gpt.c,v 1.20 2020/10/12 16:14:32 martin Exp $ */
/*
* Copyright 2018 The NetBSD Foundation, Inc.
@@ -1609,6 +1609,14 @@ gpt_free(struct disk_partitions *arg)
free(parts);
}
+static void
+gpt_destroy_part_scheme(struct disk_partitions *arg)
+{
+
+ run_program(RUN_SILENT, "gpt destroy %s", arg->disk);
+ gpt_free(arg);
+}
+
static bool
gpt_custom_attribute_writable(const struct disk_partitions *arg,
part_id ptn, size_t attr_no)
@@ -1835,5 +1843,6 @@ gpt_parts = {
.delete_partition = gpt_delete_partition,
.write_to_disk = gpt_write_to_disk,
.free = gpt_free,
+ .destroy_part_scheme = gpt_destroy_part_scheme,
.cleanup = gpt_cleanup,
};
Index: src/usr.sbin/sysinst/install.c
diff -u src/usr.sbin/sysinst/install.c:1.17 src/usr.sbin/sysinst/install.c:1.18
--- src/usr.sbin/sysinst/install.c:1.17 Tue Sep 22 16:18:54 2020
+++ src/usr.sbin/sysinst/install.c Mon Oct 12 16:14:32 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: install.c,v 1.17 2020/09/22 16:18:54 martin Exp $ */
+/* $NetBSD: install.c,v 1.18 2020/10/12 16:14:32 martin Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@@ -153,7 +153,7 @@ void
do_install(void)
{
int find_disks_ret;
- int retcode = 0;
+ int retcode = 0, res;
struct install_partition_desc install = {};
struct disk_partitions *parts;
@@ -195,8 +195,16 @@ do_install(void)
}
}
- if (!md_get_info(&install) ||
- !md_make_bsd_partitions(&install)) {
+ for (;;) {
+ if (md_get_info(&install)) {
+ res = md_make_bsd_partitions(&install);
+ if (res == -1) {
+ pm->parts = NULL;
+ continue;
+ } else if (res == 1) {
+ break;
+ }
+ }
hit_enter_to_continue(MSG_abort_inst, NULL);
goto error;
}
Index: src/usr.sbin/sysinst/partitions.h
diff -u src/usr.sbin/sysinst/partitions.h:1.17 src/usr.sbin/sysinst/partitions.h:1.18
--- src/usr.sbin/sysinst/partitions.h:1.17 Sat Oct 3 18:54:18 2020
+++ src/usr.sbin/sysinst/partitions.h Mon Oct 12 16:14:32 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: partitions.h,v 1.17 2020/10/03 18:54:18 martin Exp $ */
+/* $NetBSD: partitions.h,v 1.18 2020/10/12 16:14:32 martin Exp $ */
/*
* Copyright 2018 The NetBSD Foundation, Inc.
@@ -542,6 +542,9 @@ struct disk_partitioning_scheme {
/* Free all the data */
void (*free)(struct disk_partitions*);
+ /* Wipe all on-disk state, leave blank disk - and free data */
+ void (*destroy_part_scheme)(struct disk_partitions*);
+
/* Scheme global cleanup */
void (*cleanup)(void);
};
Index: src/usr.sbin/sysinst/mbr.c
diff -u src/usr.sbin/sysinst/mbr.c:1.35 src/usr.sbin/sysinst/mbr.c:1.36
--- src/usr.sbin/sysinst/mbr.c:1.35 Sat Oct 10 18:49:27 2020
+++ src/usr.sbin/sysinst/mbr.c Mon Oct 12 16:14:32 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: mbr.c,v 1.35 2020/10/10 18:49:27 martin Exp $ */
+/* $NetBSD: mbr.c,v 1.36 2020/10/12 16:14:32 martin Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@@ -318,7 +318,7 @@ free_mbr_info(mbr_info_t *m)
/*
* To be used only on ports which cannot provide any bios geometry
*/
-bool
+int
set_bios_geom_with_mbr_guess(struct disk_partitions *parts)
{
int cyl, head, sec;
@@ -2686,6 +2686,29 @@ mbr_free(struct disk_partitions *arg)
free(parts);
}
+static void
+mbr_destroy_part_scheme(struct disk_partitions *arg)
+{
+ struct mbr_disk_partitions *parts = (struct mbr_disk_partitions*)arg;
+ char diskpath[MAXPATHLEN];
+ int fd;
+
+ if (parts->dlabel != NULL)
+ parts->dlabel->pscheme->destroy_part_scheme(parts->dlabel);
+ fd = opendisk(arg->disk, O_RDWR, diskpath, sizeof(diskpath), 0);
+ if (fd != -1) {
+ char *buf;
+
+ buf = calloc(arg->bytes_per_sector, 1);
+ if (buf != NULL) {
+ write(fd, buf, arg->bytes_per_sector);
+ free(buf);
+ }
+ close(fd);
+ }
+ mbr_free(arg);
+}
+
static bool
mbr_verify_for_update(struct disk_partitions *arg)
{
@@ -3177,6 +3200,7 @@ mbr_parts = {
.post_edit_verify = mbr_verify,
.pre_update_verify = mbr_verify_for_update,
.free = mbr_free,
+ .destroy_part_scheme = mbr_destroy_part_scheme,
};
#endif
Index: src/usr.sbin/sysinst/mbr.h
diff -u src/usr.sbin/sysinst/mbr.h:1.5 src/usr.sbin/sysinst/mbr.h:1.6
--- src/usr.sbin/sysinst/mbr.h:1.5 Wed Apr 22 23:43:12 2020
+++ src/usr.sbin/sysinst/mbr.h Mon Oct 12 16:14:32 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: mbr.h,v 1.5 2020/04/22 23:43:12 joerg Exp $ */
+/* $NetBSD: mbr.h,v 1.6 2020/10/12 16:14:32 martin Exp $ */
/*
* Copyright 1997, 1988 Piermont Information Systems Inc.
@@ -102,7 +102,8 @@ int partsoverlap(struct mbr_partition *
/* from mbr.c */
int guess_biosgeom_from_parts(struct disk_partitions*, int *, int *, int *);
-bool set_bios_geom_with_mbr_guess(struct disk_partitions*);
+/* same return values as edit_outer_parts() */
+int set_bios_geom_with_mbr_guess(struct disk_partitions*);
void set_bios_geom(struct disk_partitions *, int *cyl, int *head, int *sec);
int otherpart(int);
int ourpart(int);
Index: src/usr.sbin/sysinst/msg.mi.de
diff -u src/usr.sbin/sysinst/msg.mi.de:1.22 src/usr.sbin/sysinst/msg.mi.de:1.23
--- src/usr.sbin/sysinst/msg.mi.de:1.22 Mon May 18 21:19:36 2020
+++ src/usr.sbin/sysinst/msg.mi.de Mon Oct 12 16:14:32 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: msg.mi.de,v 1.22 2020/05/18 21:19:36 jmcneill Exp $ */
+/* $NetBSD: msg.mi.de,v 1.23 2020/10/12 16:14:32 martin Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@@ -1068,6 +1068,13 @@ message Set_Sizes {Gr��en der NetBSD-Par
*/
message Use_Default_Parts {Standard-Partitionsg��en verwenden}
+/* Called with: Example
+ * $0 = current partitioning name Master Boot Record (MBR)
+ * $1 = short version of $0 MBR
+ */
+message Use_Different_Part_Scheme
+{Alles l�schen, anderes Partitionierungsverfahren statt $1 verwenden}
+
message Gigabytes {Gigabytes}
message Megabytes {Megabytes}
message Cylinders {Zylinder}
Index: src/usr.sbin/sysinst/part_edit.c
diff -u src/usr.sbin/sysinst/part_edit.c:1.22 src/usr.sbin/sysinst/part_edit.c:1.23
--- src/usr.sbin/sysinst/part_edit.c:1.22 Mon Oct 12 11:23:45 2020
+++ src/usr.sbin/sysinst/part_edit.c Mon Oct 12 16:14:32 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: part_edit.c,v 1.22 2020/10/12 11:23:45 martin Exp $ */
+/* $NetBSD: part_edit.c,v 1.23 2020/10/12 16:14:32 martin Exp $ */
/*
* Copyright (c) 2019 The NetBSD Foundation, Inc.
@@ -1038,6 +1038,13 @@ set_use_entire_disk(menudesc *m, void *a
return 0;
}
+static int
+set_switch_scheme(menudesc *m, void *arg)
+{
+ ((arg_rep_int*)arg)->rv = LY_OTHERSCHEME;
+ return 0;
+}
+
static enum layout_type
ask_fullpart(struct disk_partitions *parts)
{
@@ -1045,14 +1052,15 @@ ask_fullpart(struct disk_partitions *par
const char *args[2];
int menu;
size_t num_opts;
- menu_ent options[3], *opt;
+ menu_ent options[4], *opt;
daddr_t start, size;
+ bool have_existing = false;
args[0] = msg_string(pm->parts->pscheme->name);
args[1] = msg_string(pm->parts->pscheme->short_name);
ai.args.argv = args;
ai.args.argc = 2;
- ai.rv = LY_SETSIZES;
+ ai.rv = LY_ERROR;
memset(options, 0, sizeof(options));
num_opts = 0;
@@ -1064,6 +1072,7 @@ ask_fullpart(struct disk_partitions *par
opt->opt_action = set_keep_existing;
opt++;
num_opts++;
+ have_existing = true;
}
opt->opt_name = MSG_Use_only_part_of_the_disk;
opt->opt_flags = OPT_EXIT;
@@ -1077,8 +1086,16 @@ ask_fullpart(struct disk_partitions *par
opt++;
num_opts++;
+ if (have_existing && num_available_part_schemes > 1) {
+ opt->opt_name = MSG_Use_Different_Part_Scheme;
+ opt->opt_flags = OPT_EXIT;
+ opt->opt_action = set_switch_scheme;
+ opt++;
+ num_opts++;
+ }
+
menu = new_menu(MSG_Select_your_choice, options, num_opts,
- -1, -10, 0, 0, MC_NOEXITOPT, NULL, NULL, NULL, NULL, NULL);
+ -1, -10, 0, 0, 0, NULL, NULL, NULL, NULL, MSG_cancel);
if (menu != -1) {
get_menudesc(menu)->expand_act = expand_all_option_texts;
process_menu(menu, &ai);
@@ -1227,7 +1244,7 @@ ask_outer_partsizes(struct disk_partitio
return data.av.rv == 0;
}
-bool
+int
edit_outer_parts(struct disk_partitions *parts)
{
part_id i;
@@ -1236,13 +1253,13 @@ edit_outer_parts(struct disk_partitions
/* If targeting a wedge, do not ask for further partitioning */
if (pm && (pm->no_part || pm->no_mbr))
- return true;
+ return 1;
/* Make sure parts has been properly initialized */
assert(parts && parts->pscheme);
if (parts->pscheme->secondary_scheme == NULL)
- return true; /* no outer parts */
+ return 1; /* no outer parts */
if (partman_go) {
layout = LY_SETSIZES;
@@ -1275,6 +1292,10 @@ edit_outer_parts(struct disk_partitions
msg_display_add("\n\n");
layout = ask_fullpart(parts);
+ if (layout == LY_ERROR)
+ return 0;
+ else if (layout == LY_OTHERSCHEME)
+ return -1;
}
if (layout == LY_USEFULL) {
@@ -1303,18 +1324,18 @@ edit_outer_parts(struct disk_partitions
(void)fprintf(logfp,
"User answered no to destroy "
"other data, aborting.\n");
- return false;
+ return 0;
}
}
if (!md_parts_use_wholedisk(parts)) {
hit_enter_to_continue(MSG_No_free_space, NULL);
- return false;
+ return 0;
}
if (parts->pscheme->post_edit_verify) {
return
parts->pscheme->post_edit_verify(parts, true) == 2;
}
- return true;
+ return 1;
} else if (layout == LY_SETSIZES) {
return ask_outer_partsizes(parts);
} else {
Index: src/usr.sbin/sysinst/msg.mi.en
diff -u src/usr.sbin/sysinst/msg.mi.en:1.30 src/usr.sbin/sysinst/msg.mi.en:1.31
--- src/usr.sbin/sysinst/msg.mi.en:1.30 Tue May 26 15:20:45 2020
+++ src/usr.sbin/sysinst/msg.mi.en Mon Oct 12 16:14:32 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: msg.mi.en,v 1.30 2020/05/26 15:20:45 snj Exp $ */
+/* $NetBSD: msg.mi.en,v 1.31 2020/10/12 16:14:32 martin Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@@ -1006,6 +1006,13 @@ message Set_Sizes {Set sizes of NetBSD p
*/
message Use_Default_Parts {Use default partition sizes}
+/* Called with: Example
+ * $0 = current partitioning name Master Boot Record (MBR)
+ * $1 = short version of $0 MBR
+ */
+message Use_Different_Part_Scheme
+{Delete everything, use different partitions (not $1)}
+
message Gigabytes {Gigabytes}
message Megabytes {Megabytes}
message Cylinders {Cylinders}
Index: src/usr.sbin/sysinst/msg.mi.pl
diff -u src/usr.sbin/sysinst/msg.mi.pl:1.30 src/usr.sbin/sysinst/msg.mi.pl:1.31
--- src/usr.sbin/sysinst/msg.mi.pl:1.30 Mon May 18 21:19:36 2020
+++ src/usr.sbin/sysinst/msg.mi.pl Mon Oct 12 16:14:32 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: msg.mi.pl,v 1.30 2020/05/18 21:19:36 jmcneill Exp $ */
+/* $NetBSD: msg.mi.pl,v 1.31 2020/10/12 16:14:32 martin Exp $ */
/* Based on english version: */
/* NetBSD: msg.mi.pl,v 1.36 2004/04/17 18:55:35 atatat Exp */
@@ -1001,6 +1001,13 @@ message Set_Sizes {Ustaw rozmiary partyc
*/
message Use_Default_Parts {Uzyj domyslnych rozmiarow partycji}
+/* Called with: Example
+ * $0 = current partitioning name Master Boot Record (MBR)
+ * $1 = short version of $0 MBR
+ */
+message Use_Different_Part_Scheme
+{Delete everything, use different partitions (not $1)}
+
message Gigabytes {Gigabajty}
message Megabytes {Megabajty}
message Cylinders {Cylindry}
Index: src/usr.sbin/sysinst/msg.mi.es
diff -u src/usr.sbin/sysinst/msg.mi.es:1.24 src/usr.sbin/sysinst/msg.mi.es:1.25
--- src/usr.sbin/sysinst/msg.mi.es:1.24 Tue May 26 15:20:45 2020
+++ src/usr.sbin/sysinst/msg.mi.es Mon Oct 12 16:14:32 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: msg.mi.es,v 1.24 2020/05/26 15:20:45 snj Exp $ */
+/* $NetBSD: msg.mi.es,v 1.25 2020/10/12 16:14:32 martin Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@@ -1033,6 +1033,13 @@ message Set_Sizes {Establecer los tama�o
*/
message Use_Default_Parts {Use default partition sizes}
+/* Called with: Example
+ * $0 = current partitioning name Master Boot Record (MBR)
+ * $1 = short version of $0 MBR
+ */
+message Use_Different_Part_Scheme
+{Delete everything, use different partitions (not $1)}
+
message Gigabytes {Gigabytes}
message Megabytes {Megabytes}
message Cylinders {Cilindros}
Index: src/usr.sbin/sysinst/msg.mi.fr
diff -u src/usr.sbin/sysinst/msg.mi.fr:1.29 src/usr.sbin/sysinst/msg.mi.fr:1.30
--- src/usr.sbin/sysinst/msg.mi.fr:1.29 Sun Sep 27 17:36:40 2020
+++ src/usr.sbin/sysinst/msg.mi.fr Mon Oct 12 16:14:32 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: msg.mi.fr,v 1.29 2020/09/27 17:36:40 martin Exp $ */
+/* $NetBSD: msg.mi.fr,v 1.30 2020/10/12 16:14:32 martin Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@@ -1096,6 +1096,13 @@ message Set_Sizes {Sp�cifier les tailles
*/
message Use_Default_Parts {Use default partition sizes}
+/* Called with: Example
+ * $0 = current partitioning name Master Boot Record (MBR)
+ * $1 = short version of $0 MBR
+ */
+message Use_Different_Part_Scheme
+{Delete everything, use different partitions (not $1)}
+
message Gigabytes {Gigaoctets}
message Megabytes {M�gaoctets}
message Cylinders {Cylindres}
Index: src/usr.sbin/sysinst/arch/acorn32/md.c
diff -u src/usr.sbin/sysinst/arch/acorn32/md.c:1.6 src/usr.sbin/sysinst/arch/acorn32/md.c:1.7
--- src/usr.sbin/sysinst/arch/acorn32/md.c:1.6 Tue Sep 29 02:58:53 2020
+++ src/usr.sbin/sysinst/arch/acorn32/md.c Mon Oct 12 16:14:32 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: md.c,v 1.6 2020/09/29 02:58:53 msaitoh Exp $ */
+/* $NetBSD: md.c,v 1.7 2020/10/12 16:14:32 martin Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@@ -202,7 +202,7 @@ md_get_info(struct install_partition_des
/*
* md back-end code for menu-driven BSD disklabel editor.
*/
-bool
+int
md_make_bsd_partitions(struct install_partition_desc *install)
{
return make_bsd_partitions(install);
Index: src/usr.sbin/sysinst/arch/alpha/md.c
diff -u src/usr.sbin/sysinst/arch/alpha/md.c:1.8 src/usr.sbin/sysinst/arch/alpha/md.c:1.9
--- src/usr.sbin/sysinst/arch/alpha/md.c:1.8 Mon Mar 9 17:10:31 2020
+++ src/usr.sbin/sysinst/arch/alpha/md.c Mon Oct 12 16:14:32 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: md.c,v 1.8 2020/03/09 17:10:31 martin Exp $ */
+/* $NetBSD: md.c,v 1.9 2020/10/12 16:14:32 martin Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@@ -104,7 +104,7 @@ md_get_info(struct install_partition_des
/*
* md back-end code for menu-driven BSD disklabel editor.
*/
-bool
+int
md_make_bsd_partitions(struct install_partition_desc *install)
{
return make_bsd_partitions(install);
Index: src/usr.sbin/sysinst/arch/amiga/md.c
diff -u src/usr.sbin/sysinst/arch/amiga/md.c:1.5 src/usr.sbin/sysinst/arch/amiga/md.c:1.6
--- src/usr.sbin/sysinst/arch/amiga/md.c:1.5 Sat Jul 13 17:13:36 2019
+++ src/usr.sbin/sysinst/arch/amiga/md.c Mon Oct 12 16:14:32 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: md.c,v 1.5 2019/07/13 17:13:36 martin Exp $ */
+/* $NetBSD: md.c,v 1.6 2020/10/12 16:14:32 martin Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@@ -65,7 +65,7 @@ md_get_info(struct install_partition_des
/*
* md back-end code for menu-driven BSD disklabel editor.
*/
-bool
+int
md_make_bsd_partitions(struct install_partition_desc *install)
{
return 1;
Index: src/usr.sbin/sysinst/arch/arc/md.c
diff -u src/usr.sbin/sysinst/arch/arc/md.c:1.12 src/usr.sbin/sysinst/arch/arc/md.c:1.13
--- src/usr.sbin/sysinst/arch/arc/md.c:1.12 Mon Jan 27 21:21:22 2020
+++ src/usr.sbin/sysinst/arch/arc/md.c Mon Oct 12 16:14:33 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: md.c,v 1.12 2020/01/27 21:21:22 martin Exp $ */
+/* $NetBSD: md.c,v 1.13 2020/10/12 16:14:33 martin Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@@ -65,10 +65,12 @@ md_init_set_status(int flags)
bool
md_get_info(struct install_partition_desc *install)
{
+ int res;
if (pm->no_mbr || pm->no_part)
return true;
+again:
if (pm->parts == NULL) {
const struct disk_partitioning_scheme *ps =
@@ -88,13 +90,21 @@ md_get_info(struct install_partition_des
pm->dlsize = ps->size_limit;
}
- return set_bios_geom_with_mbr_guess(pm->parts);
+ res = set_bios_geom_with_mbr_guess(pm->parts);
+ if (res == 0)
+ return false;
+ else if (res == 1)
+ return true;
+
+ pm->parts->pscheme->destroy_part_scheme(pm->parts);
+ pm->parts = NULL;
+ goto again;
}
/*
* md back-end code for menu-driven BSD disklabel editor.
*/
-bool
+int
md_make_bsd_partitions(struct install_partition_desc *install)
{
Index: src/usr.sbin/sysinst/arch/atari/md.c
diff -u src/usr.sbin/sysinst/arch/atari/md.c:1.6 src/usr.sbin/sysinst/arch/atari/md.c:1.7
--- src/usr.sbin/sysinst/arch/atari/md.c:1.6 Sat Jul 13 17:13:36 2019
+++ src/usr.sbin/sysinst/arch/atari/md.c Mon Oct 12 16:14:33 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: md.c,v 1.6 2019/07/13 17:13:36 martin Exp $ */
+/* $NetBSD: md.c,v 1.7 2020/10/12 16:14:33 martin Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@@ -65,7 +65,7 @@ md_get_info(struct install_partition_des
/*
* md back-end code for menu-driven BSD disklabel editor.
*/
-bool
+int
md_make_bsd_partitions(struct install_partition_desc *install)
{
msg_fmt_display(MSG_infoahdilabel, "%s", pm->diskdev);
Index: src/usr.sbin/sysinst/arch/bebox/md.c
diff -u src/usr.sbin/sysinst/arch/bebox/md.c:1.8 src/usr.sbin/sysinst/arch/bebox/md.c:1.9
--- src/usr.sbin/sysinst/arch/bebox/md.c:1.8 Mon Jan 27 21:21:22 2020
+++ src/usr.sbin/sysinst/arch/bebox/md.c Mon Oct 12 16:14:33 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: md.c,v 1.8 2020/01/27 21:21:22 martin Exp $ */
+/* $NetBSD: md.c,v 1.9 2020/10/12 16:14:33 martin Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@@ -58,10 +58,12 @@ md_init_set_status(int flags)
bool
md_get_info(struct install_partition_desc *install)
{
+ int res;
if (pm->no_mbr || pm->no_part)
return true;
+again:
if (pm->parts == NULL) {
const struct disk_partitioning_scheme *ps =
@@ -81,13 +83,21 @@ md_get_info(struct install_partition_des
pm->dlsize = ps->size_limit;
}
- return set_bios_geom_with_mbr_guess(pm->parts);
+ res = set_bios_geom_with_mbr_guess(pm->parts);
+ if (res == 0)
+ return false;
+ else if (res == 1)
+ return true;
+
+ pm->parts->pscheme->destroy_part_scheme(pm->parts);
+ pm->parts = NULL;
+ goto again;
}
/*
* md back-end code for menu-driven BSD disklabel editor.
*/
-bool
+int
md_make_bsd_partitions(struct install_partition_desc *install)
{
return make_bsd_partitions(install);
Index: src/usr.sbin/sysinst/arch/cats/md.c
diff -u src/usr.sbin/sysinst/arch/cats/md.c:1.4 src/usr.sbin/sysinst/arch/cats/md.c:1.5
--- src/usr.sbin/sysinst/arch/cats/md.c:1.4 Sat Jul 13 17:13:36 2019
+++ src/usr.sbin/sysinst/arch/cats/md.c Mon Oct 12 16:14:33 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: md.c,v 1.4 2019/07/13 17:13:36 martin Exp $ */
+/* $NetBSD: md.c,v 1.5 2020/10/12 16:14:33 martin Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@@ -123,7 +123,7 @@ md_get_info(struct install_partition_des
/*
* md back-end code for menu-driven BSD disklabel editor.
*/
-bool
+int
md_make_bsd_partitions(struct install_partition_desc *install)
{
return make_bsd_partitions(install);
Index: src/usr.sbin/sysinst/arch/cobalt/md.c
diff -u src/usr.sbin/sysinst/arch/cobalt/md.c:1.13 src/usr.sbin/sysinst/arch/cobalt/md.c:1.14
--- src/usr.sbin/sysinst/arch/cobalt/md.c:1.13 Wed Jun 10 16:56:22 2020
+++ src/usr.sbin/sysinst/arch/cobalt/md.c Mon Oct 12 16:14:33 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: md.c,v 1.13 2020/06/10 16:56:22 tsutsui Exp $ */
+/* $NetBSD: md.c,v 1.14 2020/10/12 16:14:33 martin Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@@ -65,10 +65,12 @@ md_init_set_status(int flags)
bool
md_get_info(struct install_partition_desc *install)
{
+ int res;
if (pm->no_mbr || pm->no_part)
return true;
+again:
if (pm->parts == NULL) {
const struct disk_partitioning_scheme *ps =
@@ -88,13 +90,21 @@ md_get_info(struct install_partition_des
pm->dlsize = ps->size_limit;
}
- return set_bios_geom_with_mbr_guess(pm->parts);
+ res = set_bios_geom_with_mbr_guess(pm->parts);
+ if (res == 0)
+ return false;
+ else if (res == 1)
+ return true;
+
+ pm->parts->pscheme->destroy_part_scheme(pm->parts);
+ pm->parts = NULL;
+ goto again;
}
/*
* md back-end code for menu-driven BSD disklabel editor.
*/
-bool
+int
md_make_bsd_partitions(struct install_partition_desc *install)
{
return make_bsd_partitions(install);
Index: src/usr.sbin/sysinst/arch/dummy/md.c
diff -u src/usr.sbin/sysinst/arch/dummy/md.c:1.5 src/usr.sbin/sysinst/arch/dummy/md.c:1.6
--- src/usr.sbin/sysinst/arch/dummy/md.c:1.5 Sat Jul 13 17:13:37 2019
+++ src/usr.sbin/sysinst/arch/dummy/md.c Mon Oct 12 16:14:33 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: md.c,v 1.5 2019/07/13 17:13:37 martin Exp $ */
+/* $NetBSD: md.c,v 1.6 2020/10/12 16:14:33 martin Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@@ -55,7 +55,7 @@ md_get_info(struct install_partition_des
return true;
}
-bool
+int
md_make_bsd_partitions(struct install_partition_desc *desc)
{
return make_bsd_partitions(desc);
Index: src/usr.sbin/sysinst/arch/emips/md.c
diff -u src/usr.sbin/sysinst/arch/emips/md.c:1.8 src/usr.sbin/sysinst/arch/emips/md.c:1.9
--- src/usr.sbin/sysinst/arch/emips/md.c:1.8 Sun Dec 15 13:39:24 2019
+++ src/usr.sbin/sysinst/arch/emips/md.c Mon Oct 12 16:14:33 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: md.c,v 1.8 2019/12/15 13:39:24 martin Exp $ */
+/* $NetBSD: md.c,v 1.9 2020/10/12 16:14:33 martin Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@@ -109,7 +109,7 @@ md_get_info(struct install_partition_des
/*
* md back-end code for menu-driven BSD disklabel editor.
*/
-bool
+int
md_make_bsd_partitions(struct install_partition_desc *install)
{
return make_bsd_partitions(install);
Index: src/usr.sbin/sysinst/arch/evbarm/md.c
diff -u src/usr.sbin/sysinst/arch/evbarm/md.c:1.16 src/usr.sbin/sysinst/arch/evbarm/md.c:1.17
--- src/usr.sbin/sysinst/arch/evbarm/md.c:1.16 Fri May 29 10:25:06 2020
+++ src/usr.sbin/sysinst/arch/evbarm/md.c Mon Oct 12 16:14:33 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: md.c,v 1.16 2020/05/29 10:25:06 jmcneill Exp $ */
+/* $NetBSD: md.c,v 1.17 2020/10/12 16:14:33 martin Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@@ -92,10 +92,12 @@ md_init_set_status(int flags)
bool
md_get_info(struct install_partition_desc *install)
{
+ int res;
if (pm->no_mbr || pm->no_part)
return true;
+again:
if (pm->parts == NULL) {
const struct disk_partitioning_scheme *ps =
@@ -115,13 +117,22 @@ md_get_info(struct install_partition_des
pm->dlsize = ps->size_limit;
}
- return edit_outer_parts(pm->parts);
+
+ res = edit_outer_parts(pm->parts);
+ if (res == 0)
+ return false;
+ else if (res == 1)
+ return true;
+
+ pm->parts->pscheme->destroy_part_scheme(pm->parts);
+ pm->parts = NULL;
+ goto again;
}
/*
* md back-end code for menu-driven BSD disklabel editor.
*/
-bool
+int
md_make_bsd_partitions(struct install_partition_desc *install)
{
return make_bsd_partitions(install);
Index: src/usr.sbin/sysinst/arch/evbmips/md.c
diff -u src/usr.sbin/sysinst/arch/evbmips/md.c:1.8 src/usr.sbin/sysinst/arch/evbmips/md.c:1.9
--- src/usr.sbin/sysinst/arch/evbmips/md.c:1.8 Mon Jan 27 21:21:22 2020
+++ src/usr.sbin/sysinst/arch/evbmips/md.c Mon Oct 12 16:14:33 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: md.c,v 1.8 2020/01/27 21:21:22 martin Exp $ */
+/* $NetBSD: md.c,v 1.9 2020/10/12 16:14:33 martin Exp $ */
/*
* Copyright 1997,2002 Piermont Information Systems Inc.
@@ -58,10 +58,12 @@ md_init_set_status(int flags)
bool
md_get_info(struct install_partition_desc *install)
{
+ int res;
if (pm->no_mbr || pm->no_part)
return true;
+again:
if (pm->parts == NULL) {
const struct disk_partitioning_scheme *ps =
@@ -81,13 +83,21 @@ md_get_info(struct install_partition_des
pm->dlsize = ps->size_limit;
}
- return set_bios_geom_with_mbr_guess(pm->parts);
+ res = set_bios_geom_with_mbr_guess(pm->parts);
+ if (res == 0)
+ return false;
+ else if (res == 1)
+ return true;
+
+ pm->parts->pscheme->destroy_part_scheme(pm->parts);
+ pm->parts = NULL;
+ goto again;
}
/*
* md back-end code for menu-driven BSD disklabel editor.
*/
-bool
+int
md_make_bsd_partitions(struct install_partition_desc *install)
{
return make_bsd_partitions(install);
Index: src/usr.sbin/sysinst/arch/evbppc/md.c
diff -u src/usr.sbin/sysinst/arch/evbppc/md.c:1.8 src/usr.sbin/sysinst/arch/evbppc/md.c:1.9
--- src/usr.sbin/sysinst/arch/evbppc/md.c:1.8 Mon Jan 27 21:21:22 2020
+++ src/usr.sbin/sysinst/arch/evbppc/md.c Mon Oct 12 16:14:34 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: md.c,v 1.8 2020/01/27 21:21:22 martin Exp $ */
+/* $NetBSD: md.c,v 1.9 2020/10/12 16:14:34 martin Exp $ */
/*
* Copyright 1997,2002 Piermont Information Systems Inc.
@@ -58,10 +58,12 @@ md_init_set_status(int flags)
bool
md_get_info(struct install_partition_desc *install)
{
+ int res;
if (pm->no_mbr || pm->no_part)
return true;
+again:
if (pm->parts == NULL) {
const struct disk_partitioning_scheme *ps =
@@ -81,13 +83,21 @@ md_get_info(struct install_partition_des
pm->dlsize = ps->size_limit;
}
- return set_bios_geom_with_mbr_guess(pm->parts);
+ res = set_bios_geom_with_mbr_guess(pm->parts);
+ if (res == 0)
+ return false;
+ else if (res == 1)
+ return true;
+
+ pm->parts->pscheme->destroy_part_scheme(pm->parts);
+ pm->parts = NULL;
+ goto again;
}
/*
* md back-end code for menu-driven BSD disklabel editor.
*/
-bool
+int
md_make_bsd_partitions(struct install_partition_desc *install)
{
return make_bsd_partitions(install);
Index: src/usr.sbin/sysinst/arch/evbsh3/md.c
diff -u src/usr.sbin/sysinst/arch/evbsh3/md.c:1.5 src/usr.sbin/sysinst/arch/evbsh3/md.c:1.6
--- src/usr.sbin/sysinst/arch/evbsh3/md.c:1.5 Sat Jul 13 17:13:37 2019
+++ src/usr.sbin/sysinst/arch/evbsh3/md.c Mon Oct 12 16:14:34 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: md.c,v 1.5 2019/07/13 17:13:37 martin Exp $ */
+/* $NetBSD: md.c,v 1.6 2020/10/12 16:14:34 martin Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@@ -124,7 +124,7 @@ md_post_newfs(struct install_partition_d
return 0;
}
-bool
+int
md_make_bsd_partitions(struct install_partition_desc *install)
{
Index: src/usr.sbin/sysinst/arch/ews4800mips/md.c
diff -u src/usr.sbin/sysinst/arch/ews4800mips/md.c:1.6 src/usr.sbin/sysinst/arch/ews4800mips/md.c:1.7
--- src/usr.sbin/sysinst/arch/ews4800mips/md.c:1.6 Tue Sep 29 02:49:56 2020
+++ src/usr.sbin/sysinst/arch/ews4800mips/md.c Mon Oct 12 16:14:34 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: md.c,v 1.6 2020/09/29 02:49:56 msaitoh Exp $ */
+/* $NetBSD: md.c,v 1.7 2020/10/12 16:14:34 martin Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@@ -106,7 +106,7 @@ md_get_info(struct install_partition_des
/*
* md back-end code for menu-driven BSD disklabel editor.
*/
-bool
+int
md_make_bsd_partitions(struct install_partition_desc *install)
{
Index: src/usr.sbin/sysinst/arch/hp300/md.c
diff -u src/usr.sbin/sysinst/arch/hp300/md.c:1.10 src/usr.sbin/sysinst/arch/hp300/md.c:1.11
--- src/usr.sbin/sysinst/arch/hp300/md.c:1.10 Mon Feb 3 13:09:29 2020
+++ src/usr.sbin/sysinst/arch/hp300/md.c Mon Oct 12 16:14:34 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: md.c,v 1.10 2020/02/03 13:09:29 martin Exp $ */
+/* $NetBSD: md.c,v 1.11 2020/10/12 16:14:34 martin Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@@ -116,7 +116,7 @@ md_get_info(struct install_partition_des
/*
* md back-end code for menu-driven BSD disklabel editor.
*/
-bool
+int
md_make_bsd_partitions(struct install_partition_desc *install)
{
Index: src/usr.sbin/sysinst/arch/hpcarm/md.c
diff -u src/usr.sbin/sysinst/arch/hpcarm/md.c:1.8 src/usr.sbin/sysinst/arch/hpcarm/md.c:1.9
--- src/usr.sbin/sysinst/arch/hpcarm/md.c:1.8 Mon Jan 27 21:21:22 2020
+++ src/usr.sbin/sysinst/arch/hpcarm/md.c Mon Oct 12 16:14:34 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: md.c,v 1.8 2020/01/27 21:21:22 martin Exp $ */
+/* $NetBSD: md.c,v 1.9 2020/10/12 16:14:34 martin Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@@ -87,10 +87,12 @@ md_init_set_status(int flags)
bool
md_get_info(struct install_partition_desc *install)
{
+ int res;
if (pm->no_mbr || pm->no_part)
return true;
+again:
if (pm->parts == NULL) {
const struct disk_partitioning_scheme *ps =
@@ -110,13 +112,21 @@ md_get_info(struct install_partition_des
pm->dlsize = ps->size_limit;
}
- return set_bios_geom_with_mbr_guess(pm->parts);
+ res = set_bios_geom_with_mbr_guess(pm->parts);
+ if (res == 0)
+ return false;
+ else if (res == 1)
+ return true;
+
+ pm->parts->pscheme->destroy_part_scheme(pm->parts);
+ pm->parts = NULL;
+ goto again;
}
/*
* md back-end code for menu-driven BSD disklabel editor.
*/
-bool
+int
md_make_bsd_partitions(struct install_partition_desc *install)
{
return make_bsd_partitions(install);
Index: src/usr.sbin/sysinst/arch/hpcmips/md.c
diff -u src/usr.sbin/sysinst/arch/hpcmips/md.c:1.8 src/usr.sbin/sysinst/arch/hpcmips/md.c:1.9
--- src/usr.sbin/sysinst/arch/hpcmips/md.c:1.8 Mon Jan 27 21:21:22 2020
+++ src/usr.sbin/sysinst/arch/hpcmips/md.c Mon Oct 12 16:14:34 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: md.c,v 1.8 2020/01/27 21:21:22 martin Exp $ */
+/* $NetBSD: md.c,v 1.9 2020/10/12 16:14:34 martin Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@@ -61,10 +61,12 @@ md_init_set_status(int flags)
bool
md_get_info(struct install_partition_desc *install)
{
+ int res;
if (pm->no_mbr || pm->no_part)
return true;
+again:
if (pm->parts == NULL) {
const struct disk_partitioning_scheme *ps =
@@ -84,13 +86,21 @@ md_get_info(struct install_partition_des
pm->dlsize = ps->size_limit;
}
- return set_bios_geom_with_mbr_guess(pm->parts);
+ res = set_bios_geom_with_mbr_guess(pm->parts);
+ if (res == 0)
+ return false;
+ else if (res == 1)
+ return true;
+
+ pm->parts->pscheme->destroy_part_scheme(pm->parts);
+ pm->parts = NULL;
+ goto again;
}
/*
* md back-end code for menu-driven BSD disklabel editor.
*/
-bool
+int
md_make_bsd_partitions(struct install_partition_desc *install)
{
return make_bsd_partitions(install);
Index: src/usr.sbin/sysinst/arch/hpcsh/md.c
diff -u src/usr.sbin/sysinst/arch/hpcsh/md.c:1.9 src/usr.sbin/sysinst/arch/hpcsh/md.c:1.10
--- src/usr.sbin/sysinst/arch/hpcsh/md.c:1.9 Mon Jan 27 21:21:23 2020
+++ src/usr.sbin/sysinst/arch/hpcsh/md.c Mon Oct 12 16:14:34 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: md.c,v 1.9 2020/01/27 21:21:23 martin Exp $ */
+/* $NetBSD: md.c,v 1.10 2020/10/12 16:14:34 martin Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@@ -62,10 +62,12 @@ md_init_set_status(int flags)
bool
md_get_info(struct install_partition_desc *install)
{
+ int res;
if (pm->no_mbr || pm->no_part)
return true;
+again:
if (pm->parts == NULL) {
const struct disk_partitioning_scheme *ps =
@@ -85,13 +87,21 @@ md_get_info(struct install_partition_des
pm->dlsize = ps->size_limit;
}
- return set_bios_geom_with_mbr_guess(pm->parts);
+ res = set_bios_geom_with_mbr_guess(pm->parts);
+ if (res == 0)
+ return false;
+ else if (res == 1)
+ return true;
+
+ pm->parts->pscheme->destroy_part_scheme(pm->parts);
+ pm->parts = NULL;
+ goto again;
}
/*
* md back-end code for menu-driven BSD disklabel editor.
*/
-bool
+int
md_make_bsd_partitions(struct install_partition_desc *install)
{
Index: src/usr.sbin/sysinst/arch/hppa/md.c
diff -u src/usr.sbin/sysinst/arch/hppa/md.c:1.7 src/usr.sbin/sysinst/arch/hppa/md.c:1.8
--- src/usr.sbin/sysinst/arch/hppa/md.c:1.7 Sat Jul 13 17:13:38 2019
+++ src/usr.sbin/sysinst/arch/hppa/md.c Mon Oct 12 16:14:34 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: md.c,v 1.7 2019/07/13 17:13:38 martin Exp $ */
+/* $NetBSD: md.c,v 1.8 2020/10/12 16:14:34 martin Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@@ -117,7 +117,7 @@ md_get_info(struct install_partition_des
/*
* md back-end code for menu-driven BSD disklabel editor.
*/
-bool
+int
md_make_bsd_partitions(struct install_partition_desc *install)
{
return make_bsd_partitions(install);
Index: src/usr.sbin/sysinst/arch/i386/md.c
diff -u src/usr.sbin/sysinst/arch/i386/md.c:1.31 src/usr.sbin/sysinst/arch/i386/md.c:1.32
--- src/usr.sbin/sysinst/arch/i386/md.c:1.31 Sat Oct 10 19:42:19 2020
+++ src/usr.sbin/sysinst/arch/i386/md.c Mon Oct 12 16:14:34 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: md.c,v 1.31 2020/10/10 19:42:19 martin Exp $ */
+/* $NetBSD: md.c,v 1.32 2020/10/12 16:14:34 martin Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@@ -107,11 +107,12 @@ md_init_set_status(int flags)
bool
md_get_info(struct install_partition_desc *install)
{
- int bcyl = 0, bhead = 0, bsec = 0;
+ int bcyl = 0, bhead = 0, bsec = 0, res;
if (pm->no_mbr || pm->no_part)
return true;
+again:
if (pm->parts == NULL) {
const struct disk_partitioning_scheme *ps =
@@ -149,13 +150,21 @@ md_get_info(struct install_partition_des
if (pm->no_mbr || pm->no_part)
return true;
- return edit_outer_parts(pm->parts);
+ res = edit_outer_parts(pm->parts);
+ if (res == 0)
+ return false;
+ else if (res == 1)
+ return true;
+
+ pm->parts->pscheme->destroy_part_scheme(pm->parts);
+ pm->parts = NULL;
+ goto again;
}
/*
* md back-end code for menu-driven BSD disklabel editor.
*/
-bool
+int
md_make_bsd_partitions(struct install_partition_desc *install)
{
return make_bsd_partitions(install);
Index: src/usr.sbin/sysinst/arch/landisk/md.c
diff -u src/usr.sbin/sysinst/arch/landisk/md.c:1.13 src/usr.sbin/sysinst/arch/landisk/md.c:1.14
--- src/usr.sbin/sysinst/arch/landisk/md.c:1.13 Mon Jan 27 21:21:23 2020
+++ src/usr.sbin/sysinst/arch/landisk/md.c Mon Oct 12 16:14:34 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: md.c,v 1.13 2020/01/27 21:21:23 martin Exp $ */
+/* $NetBSD: md.c,v 1.14 2020/10/12 16:14:34 martin Exp $ */
/*
* Copyright 1997,2002 Piermont Information Systems Inc.
@@ -58,10 +58,12 @@ md_init_set_status(int flags)
bool
md_get_info(struct install_partition_desc *install)
{
+ int res;
if (pm->no_mbr || pm->no_part)
return true;
+again:
if (pm->parts == NULL) {
const struct disk_partitioning_scheme *ps =
@@ -81,13 +83,21 @@ md_get_info(struct install_partition_des
pm->dlsize = ps->size_limit;
}
- return set_bios_geom_with_mbr_guess(pm->parts);
+ res = set_bios_geom_with_mbr_guess(pm->parts);
+ if (res == 0)
+ return false;
+ else if (res == 1)
+ return true;
+
+ pm->parts->pscheme->destroy_part_scheme(pm->parts);
+ pm->parts = NULL;
+ goto again;
}
/*
* md back-end code for menu-driven BSD disklabel editor.
*/
-bool
+int
md_make_bsd_partitions(struct install_partition_desc *install)
{
return make_bsd_partitions(install);
Index: src/usr.sbin/sysinst/arch/luna68k/md.c
diff -u src/usr.sbin/sysinst/arch/luna68k/md.c:1.8 src/usr.sbin/sysinst/arch/luna68k/md.c:1.9
--- src/usr.sbin/sysinst/arch/luna68k/md.c:1.8 Thu Jan 9 13:22:32 2020
+++ src/usr.sbin/sysinst/arch/luna68k/md.c Mon Oct 12 16:14:35 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: md.c,v 1.8 2020/01/09 13:22:32 martin Exp $ */
+/* $NetBSD: md.c,v 1.9 2020/10/12 16:14:35 martin Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@@ -110,7 +110,7 @@ md_get_info(struct install_partition_des
/*
* md back-end code for menu-driven BSD disklabel editor.
*/
-bool
+int
md_make_bsd_partitions(struct install_partition_desc *install)
{
Index: src/usr.sbin/sysinst/arch/mac68k/md.c
diff -u src/usr.sbin/sysinst/arch/mac68k/md.c:1.9 src/usr.sbin/sysinst/arch/mac68k/md.c:1.10
--- src/usr.sbin/sysinst/arch/mac68k/md.c:1.9 Mon Feb 10 16:08:58 2020
+++ src/usr.sbin/sysinst/arch/mac68k/md.c Mon Oct 12 16:14:35 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: md.c,v 1.9 2020/02/10 16:08:58 martin Exp $ */
+/* $NetBSD: md.c,v 1.10 2020/10/12 16:14:35 martin Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@@ -244,7 +244,7 @@ md_get_info(struct install_partition_des
/*
* md back-end code for menu-driven BSD disklabel editor.
*/
-bool
+int
md_make_bsd_partitions(struct install_partition_desc *install)
{
int i, j, rv;
@@ -265,7 +265,7 @@ md_make_bsd_partitions(struct install_pa
if (check_for_errors()) {
process_menu (MENU_sanity, &rv);
if (rv < 0)
- return false;
+ return 0;
else if (rv)
break;
edit_diskmap();
@@ -317,7 +317,7 @@ md_make_bsd_partitions(struct install_pa
pid = pm->parts->pscheme->add_outer_partition(pm->parts,
&info, NULL);
if (pid == NO_PART)
- return false;
+ return 0;
}
}
}
@@ -327,11 +327,11 @@ md_make_bsd_partitions(struct install_pa
/* Write the converted partitions */
if (!pm->parts->pscheme->write_to_disk(pm->parts))
- return false;
+ return 0;
/* now convert to install info */
if (!install_desc_from_parts(install, pm->parts))
- return false;
+ return 0;
/* set newfs flag for all FFS partitions */
for (ndx = 0; ndx < install->num; ndx++) {
@@ -341,7 +341,7 @@ md_make_bsd_partitions(struct install_pa
install->infos[ndx].instflags |= PUIINST_NEWFS;
}
- return true;
+ return 1;
}
/*
Index: src/usr.sbin/sysinst/arch/macppc/md.c
diff -u src/usr.sbin/sysinst/arch/macppc/md.c:1.5 src/usr.sbin/sysinst/arch/macppc/md.c:1.6
--- src/usr.sbin/sysinst/arch/macppc/md.c:1.5 Sat Jul 13 17:13:38 2019
+++ src/usr.sbin/sysinst/arch/macppc/md.c Mon Oct 12 16:14:35 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: md.c,v 1.5 2019/07/13 17:13:38 martin Exp $ */
+/* $NetBSD: md.c,v 1.6 2020/10/12 16:14:35 martin Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@@ -104,7 +104,7 @@ md_get_info(struct install_partition_des
/*
* md back-end code for menu-driven BSD disklabel editor.
*/
-bool
+int
md_make_bsd_partitions(struct install_partition_desc *install)
{
return make_bsd_partitions(install);
Index: src/usr.sbin/sysinst/arch/mipsco/md.c
diff -u src/usr.sbin/sysinst/arch/mipsco/md.c:1.7 src/usr.sbin/sysinst/arch/mipsco/md.c:1.8
--- src/usr.sbin/sysinst/arch/mipsco/md.c:1.7 Sun Dec 15 13:39:24 2019
+++ src/usr.sbin/sysinst/arch/mipsco/md.c Mon Oct 12 16:14:35 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: md.c,v 1.7 2019/12/15 13:39:24 martin Exp $ */
+/* $NetBSD: md.c,v 1.8 2020/10/12 16:14:35 martin Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@@ -110,7 +110,7 @@ md_get_info(struct install_partition_des
/*
* md back-end code for menu-driven BSD disklabel editor.
*/
-bool
+int
md_make_bsd_partitions(struct install_partition_desc *install)
{
return make_bsd_partitions(install);
Index: src/usr.sbin/sysinst/arch/mvme68k/md.c
diff -u src/usr.sbin/sysinst/arch/mvme68k/md.c:1.10 src/usr.sbin/sysinst/arch/mvme68k/md.c:1.11
--- src/usr.sbin/sysinst/arch/mvme68k/md.c:1.10 Mon Feb 3 13:09:29 2020
+++ src/usr.sbin/sysinst/arch/mvme68k/md.c Mon Oct 12 16:14:35 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: md.c,v 1.10 2020/02/03 13:09:29 martin Exp $ */
+/* $NetBSD: md.c,v 1.11 2020/10/12 16:14:35 martin Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@@ -116,7 +116,7 @@ md_get_info(struct install_partition_des
/*
* md back-end code for menu-driven BSD disklabel editor.
*/
-bool
+int
md_make_bsd_partitions(struct install_partition_desc *install)
{
Index: src/usr.sbin/sysinst/arch/news68k/md.c
diff -u src/usr.sbin/sysinst/arch/news68k/md.c:1.6 src/usr.sbin/sysinst/arch/news68k/md.c:1.7
--- src/usr.sbin/sysinst/arch/news68k/md.c:1.6 Sat Jul 13 17:13:39 2019
+++ src/usr.sbin/sysinst/arch/news68k/md.c Mon Oct 12 16:14:35 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: md.c,v 1.6 2019/07/13 17:13:39 martin Exp $ */
+/* $NetBSD: md.c,v 1.7 2020/10/12 16:14:35 martin Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@@ -105,7 +105,7 @@ md_get_info(struct install_partition_des
/*
* md back-end code for menu-driven BSD disklabel editor.
*/
-bool
+int
md_make_bsd_partitions(struct install_partition_desc *install)
{
Index: src/usr.sbin/sysinst/arch/newsmips/md.c
diff -u src/usr.sbin/sysinst/arch/newsmips/md.c:1.5 src/usr.sbin/sysinst/arch/newsmips/md.c:1.6
--- src/usr.sbin/sysinst/arch/newsmips/md.c:1.5 Sat Jul 13 17:13:39 2019
+++ src/usr.sbin/sysinst/arch/newsmips/md.c Mon Oct 12 16:14:35 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: md.c,v 1.5 2019/07/13 17:13:39 martin Exp $ */
+/* $NetBSD: md.c,v 1.6 2020/10/12 16:14:35 martin Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@@ -104,7 +104,7 @@ md_get_info(struct install_partition_des
/*
* md back-end code for menu-driven BSD disklabel editor.
*/
-bool
+int
md_make_bsd_partitions(struct install_partition_desc *install)
{
return make_bsd_partitions(install);
Index: src/usr.sbin/sysinst/arch/ofppc/md.c
diff -u src/usr.sbin/sysinst/arch/ofppc/md.c:1.10 src/usr.sbin/sysinst/arch/ofppc/md.c:1.11
--- src/usr.sbin/sysinst/arch/ofppc/md.c:1.10 Mon Jan 27 21:21:23 2020
+++ src/usr.sbin/sysinst/arch/ofppc/md.c Mon Oct 12 16:14:35 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: md.c,v 1.10 2020/01/27 21:21:23 martin Exp $ */
+/* $NetBSD: md.c,v 1.11 2020/10/12 16:14:35 martin Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@@ -75,6 +75,7 @@ md_init_set_status(int flags)
bool
md_get_info(struct install_partition_desc *install)
{
+ int res;
if (check_rdb())
return true;
@@ -102,13 +103,21 @@ md_get_info(struct install_partition_des
pm->dlsize = ps->size_limit;
}
- return set_bios_geom_with_mbr_guess(pm->parts);
+ res = set_bios_geom_with_mbr_guess(pm->parts);
+ if (res == 0)
+ return false;
+ else if (res == 1)
+ return true;
+
+ pm->parts->pscheme->destroy_part_scheme(pm->parts);
+ pm->parts = NULL;
+ goto again;
}
/*
* md back-end code for menu-driven BSD disklabel editor.
*/
-bool
+int
md_make_bsd_partitions(struct install_partition_desc *install)
{
#if 0
Index: src/usr.sbin/sysinst/arch/playstation2/md.c
diff -u src/usr.sbin/sysinst/arch/playstation2/md.c:1.8 src/usr.sbin/sysinst/arch/playstation2/md.c:1.9
--- src/usr.sbin/sysinst/arch/playstation2/md.c:1.8 Mon Jan 27 21:21:23 2020
+++ src/usr.sbin/sysinst/arch/playstation2/md.c Mon Oct 12 16:14:35 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: md.c,v 1.8 2020/01/27 21:21:23 martin Exp $ */
+/* $NetBSD: md.c,v 1.9 2020/10/12 16:14:35 martin Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@@ -62,11 +62,12 @@ md_init_set_status(int minimal)
bool
md_get_info(struct install_partition_desc *install)
{
- int cyl, head, sec;
+ int cyl, head, sec, res;
if (pm->no_mbr || pm->no_part)
return true;
+again:
if (pm->parts == NULL) {
const struct disk_partitioning_scheme *ps =
@@ -107,13 +108,21 @@ md_get_info(struct install_partition_des
if (pm->no_mbr || pm->no_part)
return true;
- return edit_outer_parts(pm->parts);
+ res = edit_outer_parts(pm->parts);
+ if (res == 0)
+ return false;
+ else if (res == 1)
+ return true;
+
+ pm->parts->pscheme->destroy_part_scheme(pm->parts);
+ pm->parts = NULL;
+ goto again;
}
/*
* md back-end code for menu-driven BSD disklabel editor.
*/
-bool
+int
md_make_bsd_partitions(struct install_partition_desc *install)
{
return make_bsd_partitions(install);
Index: src/usr.sbin/sysinst/arch/pmax/md.c
diff -u src/usr.sbin/sysinst/arch/pmax/md.c:1.7 src/usr.sbin/sysinst/arch/pmax/md.c:1.8
--- src/usr.sbin/sysinst/arch/pmax/md.c:1.7 Sun Dec 15 13:39:24 2019
+++ src/usr.sbin/sysinst/arch/pmax/md.c Mon Oct 12 16:14:36 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: md.c,v 1.7 2019/12/15 13:39:24 martin Exp $ */
+/* $NetBSD: md.c,v 1.8 2020/10/12 16:14:36 martin Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@@ -109,7 +109,7 @@ md_get_info(struct install_partition_des
/*
* md back-end code for menu-driven BSD disklabel editor.
*/
-bool
+int
md_make_bsd_partitions(struct install_partition_desc *install)
{
return make_bsd_partitions(install);
Index: src/usr.sbin/sysinst/arch/prep/md.c
diff -u src/usr.sbin/sysinst/arch/prep/md.c:1.12 src/usr.sbin/sysinst/arch/prep/md.c:1.13
--- src/usr.sbin/sysinst/arch/prep/md.c:1.12 Mon Jan 27 21:21:23 2020
+++ src/usr.sbin/sysinst/arch/prep/md.c Mon Oct 12 16:14:36 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: md.c,v 1.12 2020/01/27 21:21:23 martin Exp $ */
+/* $NetBSD: md.c,v 1.13 2020/10/12 16:14:36 martin Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@@ -63,10 +63,12 @@ md_init_set_status(int flags)
bool
md_get_info(struct install_partition_desc *install)
{
+ int res;
if (pm->no_mbr || pm->no_part)
return true;
+again:
if (pm->parts == NULL) {
const struct disk_partitioning_scheme *ps =
@@ -86,13 +88,21 @@ md_get_info(struct install_partition_des
pm->dlsize = ps->size_limit;
}
- return set_bios_geom_with_mbr_guess(pm->parts);
+ res = set_bios_geom_with_mbr_guess(pm->parts);
+ if (res == 0)
+ return false;
+ else if (res == 1)
+ return true;
+
+ pm->parts->pscheme->destroy_part_scheme(pm->parts);
+ pm->parts = NULL;
+ goto again;
}
/*
* md back-end code for menu-driven BSD disklabel editor.
*/
-bool
+int
md_make_bsd_partitions(struct install_partition_desc *install)
{
return make_bsd_partitions(install);
Index: src/usr.sbin/sysinst/arch/sandpoint/md.c
diff -u src/usr.sbin/sysinst/arch/sandpoint/md.c:1.8 src/usr.sbin/sysinst/arch/sandpoint/md.c:1.9
--- src/usr.sbin/sysinst/arch/sandpoint/md.c:1.8 Mon Jan 27 21:21:23 2020
+++ src/usr.sbin/sysinst/arch/sandpoint/md.c Mon Oct 12 16:14:36 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: md.c,v 1.8 2020/01/27 21:21:23 martin Exp $ */
+/* $NetBSD: md.c,v 1.9 2020/10/12 16:14:36 martin Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@@ -92,10 +92,12 @@ md_init_set_status(int flags)
bool
md_get_info(struct install_partition_desc *install)
{
+ int res;
if (pm->no_mbr || pm->no_part)
return true;
+again:
if (pm->parts == NULL) {
const struct disk_partitioning_scheme *ps =
@@ -115,13 +117,21 @@ md_get_info(struct install_partition_des
pm->dlsize = ps->size_limit;
}
- return set_bios_geom_with_mbr_guess(pm->parts);
+ res = set_bios_geom_with_mbr_guess(pm->parts);
+ if (res == 0)
+ return false;
+ else if (res == 1)
+ return true;
+
+ pm->parts->pscheme->destroy_part_scheme(pm->parts);
+ pm->parts = NULL;
+ goto again;
}
/*
* md back-end code for menu-driven BSD disklabel editor.
*/
-bool
+int
md_make_bsd_partitions(struct install_partition_desc *install)
{
return make_bsd_partitions(install);
Index: src/usr.sbin/sysinst/arch/sgimips/md.c
diff -u src/usr.sbin/sysinst/arch/sgimips/md.c:1.8 src/usr.sbin/sysinst/arch/sgimips/md.c:1.9
--- src/usr.sbin/sysinst/arch/sgimips/md.c:1.8 Sat Jul 13 17:13:40 2019
+++ src/usr.sbin/sysinst/arch/sgimips/md.c Mon Oct 12 16:14:36 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: md.c,v 1.8 2019/07/13 17:13:40 martin Exp $ */
+/* $NetBSD: md.c,v 1.9 2020/10/12 16:14:36 martin Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@@ -126,7 +126,7 @@ md_get_info(struct install_partition_des
/*
* md back-end code for menu-driven BSD disklabel editor.
*/
-bool
+int
md_make_bsd_partitions(struct install_partition_desc *install)
{
return make_bsd_partitions(install);
Index: src/usr.sbin/sysinst/arch/shark/md.c
diff -u src/usr.sbin/sysinst/arch/shark/md.c:1.5 src/usr.sbin/sysinst/arch/shark/md.c:1.6
--- src/usr.sbin/sysinst/arch/shark/md.c:1.5 Sat Jul 13 17:13:40 2019
+++ src/usr.sbin/sysinst/arch/shark/md.c Mon Oct 12 16:14:36 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: md.c,v 1.5 2019/07/13 17:13:40 martin Exp $ */
+/* $NetBSD: md.c,v 1.6 2020/10/12 16:14:36 martin Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@@ -107,7 +107,7 @@ md_get_info(struct install_partition_des
/*
* md back-end code for menu-driven BSD disklabel editor.
*/
-bool
+int
md_make_bsd_partitions(struct install_partition_desc *install)
{
return make_bsd_partitions(install);
Index: src/usr.sbin/sysinst/arch/sparc/md.c
diff -u src/usr.sbin/sysinst/arch/sparc/md.c:1.5 src/usr.sbin/sysinst/arch/sparc/md.c:1.6
--- src/usr.sbin/sysinst/arch/sparc/md.c:1.5 Sat Jul 13 17:13:40 2019
+++ src/usr.sbin/sysinst/arch/sparc/md.c Mon Oct 12 16:14:36 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: md.c,v 1.5 2019/07/13 17:13:40 martin Exp $ */
+/* $NetBSD: md.c,v 1.6 2020/10/12 16:14:36 martin Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@@ -73,7 +73,7 @@ md_get_info(struct install_partition_des
/*
* md back-end code for menu-driven BSD disklabel editor.
*/
-bool
+int
md_make_bsd_partitions(struct install_partition_desc *install)
{
return(make_bsd_partitions(install));
Index: src/usr.sbin/sysinst/arch/sparc64/md.c
diff -u src/usr.sbin/sysinst/arch/sparc64/md.c:1.5 src/usr.sbin/sysinst/arch/sparc64/md.c:1.6
--- src/usr.sbin/sysinst/arch/sparc64/md.c:1.5 Sat Jul 13 17:13:40 2019
+++ src/usr.sbin/sysinst/arch/sparc64/md.c Mon Oct 12 16:14:36 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: md.c,v 1.5 2019/07/13 17:13:40 martin Exp $ */
+/* $NetBSD: md.c,v 1.6 2020/10/12 16:14:36 martin Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@@ -74,7 +74,7 @@ md_get_info(struct install_partition_des
/*
* md back-end code for menu-driven BSD disklabel editor.
*/
-bool
+int
md_make_bsd_partitions(struct install_partition_desc *install)
{
return make_bsd_partitions(install);
Index: src/usr.sbin/sysinst/arch/vax/md.c
diff -u src/usr.sbin/sysinst/arch/vax/md.c:1.6 src/usr.sbin/sysinst/arch/vax/md.c:1.7
--- src/usr.sbin/sysinst/arch/vax/md.c:1.6 Sat Jul 13 17:13:40 2019
+++ src/usr.sbin/sysinst/arch/vax/md.c Mon Oct 12 16:14:36 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: md.c,v 1.6 2019/07/13 17:13:40 martin Exp $ */
+/* $NetBSD: md.c,v 1.7 2020/10/12 16:14:36 martin Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@@ -112,7 +112,7 @@ md_get_info(struct install_partition_des
/*
* md back-end code for menu-driven BSD disklabel editor.
*/
-bool
+int
md_make_bsd_partitions(struct install_partition_desc *install)
{
return make_bsd_partitions(install);
Index: src/usr.sbin/sysinst/arch/x68k/md.c
diff -u src/usr.sbin/sysinst/arch/x68k/md.c:1.10 src/usr.sbin/sysinst/arch/x68k/md.c:1.11
--- src/usr.sbin/sysinst/arch/x68k/md.c:1.10 Mon Feb 3 13:09:29 2020
+++ src/usr.sbin/sysinst/arch/x68k/md.c Mon Oct 12 16:14:36 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: md.c,v 1.10 2020/02/03 13:09:29 martin Exp $ */
+/* $NetBSD: md.c,v 1.11 2020/10/12 16:14:36 martin Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@@ -145,7 +145,7 @@ md_get_info(struct install_partition_des
/*
* md back-end code for menu-driven BSD disklabel editor.
*/
-bool
+int
md_make_bsd_partitions(struct install_partition_desc *install)
{
return make_bsd_partitions(install);
Index: src/usr.sbin/sysinst/arch/zaurus/md.c
diff -u src/usr.sbin/sysinst/arch/zaurus/md.c:1.8 src/usr.sbin/sysinst/arch/zaurus/md.c:1.9
--- src/usr.sbin/sysinst/arch/zaurus/md.c:1.8 Mon Jan 27 21:21:23 2020
+++ src/usr.sbin/sysinst/arch/zaurus/md.c Mon Oct 12 16:14:37 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: md.c,v 1.8 2020/01/27 21:21:23 martin Exp $ */
+/* $NetBSD: md.c,v 1.9 2020/10/12 16:14:37 martin Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@@ -72,6 +72,7 @@ md_init_set_status(int flags)
bool
md_get_info(struct install_partition_desc *install)
{
+ int res;
if (pm->no_mbr || pm->no_part)
return true;
@@ -95,10 +96,18 @@ md_get_info(struct install_partition_des
pm->dlsize = ps->size_limit;
}
- return set_bios_geom_with_mbr_guess(pm->parts);
+ res = set_bios_geom_with_mbr_guess(pm->parts);
+ if (res == 0)
+ return false;
+ else if (res == 1)
+ return true;
+
+ pm->parts->pscheme->destroy_part_scheme(pm->parts);
+ pm->parts = NULL;
+ goto again;
}
-bool
+int
md_make_bsd_partitions(struct install_partition_desc *install)
{
return make_bsd_partitions(install);