Module Name: src
Committed By: martin
Date: Mon Oct 12 12:17:29 UTC 2020
Modified Files:
src/usr.sbin/sysinst: bsddisklabel.c
Log Message:
Previously we abused pm->ptstart / pm->ptsize to pass the bounds of the
NetBSD outer partition to the inner partition editor - but now this is
not a valid assumption any more, so explicitly fix the bounds if an
outer partition exists.
To generate a diff of this commit:
cvs rdiff -u -r1.50 -r1.51 src/usr.sbin/sysinst/bsddisklabel.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.50 src/usr.sbin/sysinst/bsddisklabel.c:1.51
--- src/usr.sbin/sysinst/bsddisklabel.c:1.50 Fri Oct 9 18:33:00 2020
+++ src/usr.sbin/sysinst/bsddisklabel.c Mon Oct 12 12:17:29 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: bsddisklabel.c,v 1.50 2020/10/09 18:33:00 martin Exp $ */
+/* $NetBSD: bsddisklabel.c,v 1.51 2020/10/12 12:17:29 martin Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@@ -1701,6 +1701,7 @@ make_bsd_partitions(struct install_parti
struct disk_partitions *parts = pm->parts;
const struct disk_partitioning_scheme *pscheme;
struct partition_usage_set wanted;
+ daddr_t p_start, p_size;
enum layout_type layoutkind = LY_SETSIZES;
bool have_existing;
@@ -1777,11 +1778,20 @@ make_bsd_partitions(struct install_parti
layoutkind = ask_layout(parts, have_existing);
}
+ if (layoutkind == LY_USEDEFAULT || layoutkind == LY_SETSIZES) {
+ /* calc available disk area for the NetBSD partitions */
+ p_start = pm->ptstart;
+ p_size = pm->ptsize;
+ if (parts->parent != NULL &&
+ parts->parent->pscheme->guess_install_target != NULL)
+ parts->parent->pscheme->guess_install_target(
+ parts->parent, &p_start, &p_size);
+ }
if (layoutkind == LY_USEDEFAULT) {
- replace_by_default(parts, pm->ptstart, pm->ptsize,
+ replace_by_default(parts, p_start, p_size,
&wanted);
} else if (layoutkind == LY_SETSIZES) {
- if (!edit_with_defaults(parts, pm->ptstart, pm->ptsize,
+ if (!edit_with_defaults(parts, p_start, p_size,
&wanted)) {
free_usage_set(&wanted);
return false;