Module Name:    src
Committed By:   martin
Date:           Thu Jun 13 09:36:56 UTC 2019

Modified Files:
        src/usr.sbin/sysinst/arch/arc: md.c
        src/usr.sbin/sysinst/arch/bebox: md.c
        src/usr.sbin/sysinst/arch/cobalt: 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/hpcarm: md.c
        src/usr.sbin/sysinst/arch/hpcmips: md.c
        src/usr.sbin/sysinst/arch/hpcsh: md.c
        src/usr.sbin/sysinst/arch/landisk: md.c
        src/usr.sbin/sysinst/arch/ofppc: md.c
        src/usr.sbin/sysinst/arch/prep: md.c
        src/usr.sbin/sysinst/arch/sandpoint: md.c
        src/usr.sbin/sysinst/arch/zaurus: md.c

Log Message:
In the new world order disks may come without any partitioning scheme
attached - so the user may have to select one.


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/usr.sbin/sysinst/arch/arc/md.c
cvs rdiff -u -r1.3 -r1.4 src/usr.sbin/sysinst/arch/bebox/md.c
cvs rdiff -u -r1.5 -r1.6 src/usr.sbin/sysinst/arch/cobalt/md.c
cvs rdiff -u -r1.6 -r1.7 src/usr.sbin/sysinst/arch/evbarm/md.c
cvs rdiff -u -r1.3 -r1.4 src/usr.sbin/sysinst/arch/evbmips/md.c
cvs rdiff -u -r1.3 -r1.4 src/usr.sbin/sysinst/arch/evbppc/md.c
cvs rdiff -u -r1.3 -r1.4 src/usr.sbin/sysinst/arch/hpcarm/md.c
cvs rdiff -u -r1.3 -r1.4 src/usr.sbin/sysinst/arch/hpcmips/md.c
cvs rdiff -u -r1.4 -r1.5 src/usr.sbin/sysinst/arch/hpcsh/md.c
cvs rdiff -u -r1.5 -r1.6 src/usr.sbin/sysinst/arch/landisk/md.c
cvs rdiff -u -r1.4 -r1.5 src/usr.sbin/sysinst/arch/ofppc/md.c
cvs rdiff -u -r1.5 -r1.6 src/usr.sbin/sysinst/arch/prep/md.c
cvs rdiff -u -r1.3 -r1.4 src/usr.sbin/sysinst/arch/sandpoint/md.c
cvs rdiff -u -r1.3 -r1.4 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/arch/arc/md.c
diff -u src/usr.sbin/sysinst/arch/arc/md.c:1.5 src/usr.sbin/sysinst/arch/arc/md.c:1.6
--- src/usr.sbin/sysinst/arch/arc/md.c:1.5	Wed Jun 12 06:20:18 2019
+++ src/usr.sbin/sysinst/arch/arc/md.c	Thu Jun 13 09:36:54 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: md.c,v 1.5 2019/06/12 06:20:18 martin Exp $ */
+/*	$NetBSD: md.c,v 1.6 2019/06/13 09:36:54 martin Exp $ */
 
 /*
  * Copyright 1997 Piermont Information Systems Inc.
@@ -65,6 +65,29 @@ md_init_set_status(int flags)
 bool
 md_get_info(struct install_partition_desc *install)
 {
+
+	if (pm->no_mbr || pm->no_part)
+		return true;
+
+	if (pm->parts == NULL) {
+
+		const struct disk_partitioning_scheme *ps =
+		    select_part_scheme(pm, NULL, true, NULL);
+
+		if (!ps)
+			return true;
+
+		struct disk_partitions *parts =
+		   (*ps->create_new_for_disk)(pm->diskdev,
+		   0, pm->dlsize, pm->dlsize, true);
+		if (!parts)
+			return false;
+
+		pm->parts = parts;
+		if (ps->size_limit > 0 && pm->dlsize > ps->size_limit)
+			pm->dlsize = ps->size_limit;
+	}
+
 	return set_bios_geom_with_mbr_guess(pm->parts);
 }
 

Index: src/usr.sbin/sysinst/arch/bebox/md.c
diff -u src/usr.sbin/sysinst/arch/bebox/md.c:1.3 src/usr.sbin/sysinst/arch/bebox/md.c:1.4
--- src/usr.sbin/sysinst/arch/bebox/md.c:1.3	Wed Jun 12 06:20:19 2019
+++ src/usr.sbin/sysinst/arch/bebox/md.c	Thu Jun 13 09:36:54 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: md.c,v 1.3 2019/06/12 06:20:19 martin Exp $ */
+/*	$NetBSD: md.c,v 1.4 2019/06/13 09:36:54 martin Exp $ */
 
 /*
  * Copyright 1997 Piermont Information Systems Inc.
@@ -58,6 +58,29 @@ md_init_set_status(int flags)
 bool
 md_get_info(struct install_partition_desc *install)
 {
+
+	if (pm->no_mbr || pm->no_part)
+		return true;
+
+	if (pm->parts == NULL) {
+
+		const struct disk_partitioning_scheme *ps =
+		    select_part_scheme(pm, NULL, true, NULL);
+
+		if (!ps)
+			return true;
+
+		struct disk_partitions *parts =
+		   (*ps->create_new_for_disk)(pm->diskdev,
+		   0, pm->dlsize, pm->dlsize, true);
+		if (!parts)
+			return false;
+
+		pm->parts = parts;
+		if (ps->size_limit > 0 && pm->dlsize > ps->size_limit)
+			pm->dlsize = ps->size_limit;
+	}
+
 	return set_bios_geom_with_mbr_guess(pm->parts);
 }
 

Index: src/usr.sbin/sysinst/arch/cobalt/md.c
diff -u src/usr.sbin/sysinst/arch/cobalt/md.c:1.5 src/usr.sbin/sysinst/arch/cobalt/md.c:1.6
--- src/usr.sbin/sysinst/arch/cobalt/md.c:1.5	Wed Jun 12 06:20:19 2019
+++ src/usr.sbin/sysinst/arch/cobalt/md.c	Thu Jun 13 09:36:54 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: md.c,v 1.5 2019/06/12 06:20:19 martin Exp $ */
+/*	$NetBSD: md.c,v 1.6 2019/06/13 09:36:54 martin Exp $ */
 
 /*
  * Copyright 1997 Piermont Information Systems Inc.
@@ -65,6 +65,29 @@ md_init_set_status(int flags)
 bool
 md_get_info(struct install_partition_desc *install)
 {
+
+	if (pm->no_mbr || pm->no_part)
+		return true;
+
+	if (pm->parts == NULL) {
+
+		const struct disk_partitioning_scheme *ps =
+		    select_part_scheme(pm, NULL, true, NULL);
+
+		if (!ps)
+			return true;
+
+		struct disk_partitions *parts =
+		   (*ps->create_new_for_disk)(pm->diskdev,
+		   0, pm->dlsize, pm->dlsize, true);
+		if (!parts)
+			return false;
+
+		pm->parts = parts;
+		if (ps->size_limit > 0 && pm->dlsize > ps->size_limit)
+			pm->dlsize = ps->size_limit;
+	}
+
 	return set_bios_geom_with_mbr_guess(pm->parts);
 }
 

Index: src/usr.sbin/sysinst/arch/evbarm/md.c
diff -u src/usr.sbin/sysinst/arch/evbarm/md.c:1.6 src/usr.sbin/sysinst/arch/evbarm/md.c:1.7
--- src/usr.sbin/sysinst/arch/evbarm/md.c:1.6	Wed Jun 12 06:20:19 2019
+++ src/usr.sbin/sysinst/arch/evbarm/md.c	Thu Jun 13 09:36:54 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: md.c,v 1.6 2019/06/12 06:20:19 martin Exp $ */
+/*	$NetBSD: md.c,v 1.7 2019/06/13 09:36:54 martin Exp $ */
 
 /*
  * Copyright 1997 Piermont Information Systems Inc.
@@ -73,6 +73,28 @@ bool
 md_get_info(struct install_partition_desc *install)
 {
 
+	if (pm->no_mbr || pm->no_part)
+		return true;
+
+	if (pm->parts == NULL) {
+
+		const struct disk_partitioning_scheme *ps =
+		    select_part_scheme(pm, NULL, true, NULL);
+
+		if (!ps)
+			return true;
+
+		struct disk_partitions *parts =
+		   (*ps->create_new_for_disk)(pm->diskdev,
+		   0, pm->dlsize, pm->dlsize, true);
+		if (!parts)
+			return false;
+
+		pm->parts = parts;
+		if (ps->size_limit > 0 && pm->dlsize > ps->size_limit)
+			pm->dlsize = ps->size_limit;
+	}
+
 	if (boardtype == BOARD_TYPE_RPI)
 		return set_bios_geom_with_mbr_guess(pm->parts);
 

Index: src/usr.sbin/sysinst/arch/evbmips/md.c
diff -u src/usr.sbin/sysinst/arch/evbmips/md.c:1.3 src/usr.sbin/sysinst/arch/evbmips/md.c:1.4
--- src/usr.sbin/sysinst/arch/evbmips/md.c:1.3	Wed Jun 12 06:20:19 2019
+++ src/usr.sbin/sysinst/arch/evbmips/md.c	Thu Jun 13 09:36:55 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: md.c,v 1.3 2019/06/12 06:20:19 martin Exp $ */
+/* $NetBSD: md.c,v 1.4 2019/06/13 09:36:55 martin Exp $ */
 
 /*
  * Copyright 1997,2002 Piermont Information Systems Inc.
@@ -58,6 +58,29 @@ md_init_set_status(int flags)
 bool
 md_get_info(struct install_partition_desc *install)
 {
+
+	if (pm->no_mbr || pm->no_part)
+		return true;
+
+	if (pm->parts == NULL) {
+
+		const struct disk_partitioning_scheme *ps =
+		    select_part_scheme(pm, NULL, true, NULL);
+
+		if (!ps)
+			return true;
+
+		struct disk_partitions *parts =
+		   (*ps->create_new_for_disk)(pm->diskdev,
+		   0, pm->dlsize, pm->dlsize, true);
+		if (!parts)
+			return false;
+
+		pm->parts = parts;
+		if (ps->size_limit > 0 && pm->dlsize > ps->size_limit)
+			pm->dlsize = ps->size_limit;
+	}
+
 	return set_bios_geom_with_mbr_guess(pm->parts);
 }
 

Index: src/usr.sbin/sysinst/arch/evbppc/md.c
diff -u src/usr.sbin/sysinst/arch/evbppc/md.c:1.3 src/usr.sbin/sysinst/arch/evbppc/md.c:1.4
--- src/usr.sbin/sysinst/arch/evbppc/md.c:1.3	Wed Jun 12 06:20:19 2019
+++ src/usr.sbin/sysinst/arch/evbppc/md.c	Thu Jun 13 09:36:55 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: md.c,v 1.3 2019/06/12 06:20:19 martin Exp $ */
+/*	$NetBSD: md.c,v 1.4 2019/06/13 09:36:55 martin Exp $ */
 
 /*
  * Copyright 1997,2002 Piermont Information Systems Inc.
@@ -58,6 +58,29 @@ md_init_set_status(int flags)
 bool
 md_get_info(struct install_partition_desc *install)
 {
+
+	if (pm->no_mbr || pm->no_part)
+		return true;
+
+	if (pm->parts == NULL) {
+
+		const struct disk_partitioning_scheme *ps =
+		    select_part_scheme(pm, NULL, true, NULL);
+
+		if (!ps)
+			return true;
+
+		struct disk_partitions *parts =
+		   (*ps->create_new_for_disk)(pm->diskdev,
+		   0, pm->dlsize, pm->dlsize, true);
+		if (!parts)
+			return false;
+
+		pm->parts = parts;
+		if (ps->size_limit > 0 && pm->dlsize > ps->size_limit)
+			pm->dlsize = ps->size_limit;
+	}
+
 	return set_bios_geom_with_mbr_guess(pm->parts);
 }
 

Index: src/usr.sbin/sysinst/arch/hpcarm/md.c
diff -u src/usr.sbin/sysinst/arch/hpcarm/md.c:1.3 src/usr.sbin/sysinst/arch/hpcarm/md.c:1.4
--- src/usr.sbin/sysinst/arch/hpcarm/md.c:1.3	Wed Jun 12 06:20:20 2019
+++ src/usr.sbin/sysinst/arch/hpcarm/md.c	Thu Jun 13 09:36:55 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: md.c,v 1.3 2019/06/12 06:20:20 martin Exp $ */
+/*	$NetBSD: md.c,v 1.4 2019/06/13 09:36:55 martin Exp $ */
 
 /*
  * Copyright 1997 Piermont Information Systems Inc.
@@ -87,6 +87,29 @@ md_init_set_status(int flags)
 bool
 md_get_info(struct install_partition_desc *install)
 {
+
+	if (pm->no_mbr || pm->no_part)
+		return true;
+
+	if (pm->parts == NULL) {
+
+		const struct disk_partitioning_scheme *ps =
+		    select_part_scheme(pm, NULL, true, NULL);
+
+		if (!ps)
+			return true;
+
+		struct disk_partitions *parts =
+		   (*ps->create_new_for_disk)(pm->diskdev,
+		   0, pm->dlsize, pm->dlsize, true);
+		if (!parts)
+			return false;
+
+		pm->parts = parts;
+		if (ps->size_limit > 0 && pm->dlsize > ps->size_limit)
+			pm->dlsize = ps->size_limit;
+	}
+
 	return set_bios_geom_with_mbr_guess(pm->parts);
 }
 

Index: src/usr.sbin/sysinst/arch/hpcmips/md.c
diff -u src/usr.sbin/sysinst/arch/hpcmips/md.c:1.3 src/usr.sbin/sysinst/arch/hpcmips/md.c:1.4
--- src/usr.sbin/sysinst/arch/hpcmips/md.c:1.3	Wed Jun 12 06:20:20 2019
+++ src/usr.sbin/sysinst/arch/hpcmips/md.c	Thu Jun 13 09:36:55 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: md.c,v 1.3 2019/06/12 06:20:20 martin Exp $ */
+/*	$NetBSD: md.c,v 1.4 2019/06/13 09:36:55 martin Exp $ */
 
 /*
  * Copyright 1997 Piermont Information Systems Inc.
@@ -61,6 +61,29 @@ md_init_set_status(int flags)
 bool
 md_get_info(struct install_partition_desc *install)
 {
+
+	if (pm->no_mbr || pm->no_part)
+		return true;
+
+	if (pm->parts == NULL) {
+
+		const struct disk_partitioning_scheme *ps =
+		    select_part_scheme(pm, NULL, true, NULL);
+
+		if (!ps)
+			return true;
+
+		struct disk_partitions *parts =
+		   (*ps->create_new_for_disk)(pm->diskdev,
+		   0, pm->dlsize, pm->dlsize, true);
+		if (!parts)
+			return false;
+
+		pm->parts = parts;
+		if (ps->size_limit > 0 && pm->dlsize > ps->size_limit)
+			pm->dlsize = ps->size_limit;
+	}
+
 	return set_bios_geom_with_mbr_guess(pm->parts);
 }
 

Index: src/usr.sbin/sysinst/arch/hpcsh/md.c
diff -u src/usr.sbin/sysinst/arch/hpcsh/md.c:1.4 src/usr.sbin/sysinst/arch/hpcsh/md.c:1.5
--- src/usr.sbin/sysinst/arch/hpcsh/md.c:1.4	Wed Jun 12 06:20:20 2019
+++ src/usr.sbin/sysinst/arch/hpcsh/md.c	Thu Jun 13 09:36:55 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: md.c,v 1.4 2019/06/12 06:20:20 martin Exp $	*/
+/*	$NetBSD: md.c,v 1.5 2019/06/13 09:36:55 martin Exp $	*/
 
 /*
  * Copyright 1997 Piermont Information Systems Inc.
@@ -63,6 +63,28 @@ bool
 md_get_info(struct install_partition_desc *install)
 {
 
+	if (pm->no_mbr || pm->no_part)
+		return true;
+
+	if (pm->parts == NULL) {
+
+		const struct disk_partitioning_scheme *ps =
+		    select_part_scheme(pm, NULL, true, NULL);
+
+		if (!ps)
+			return true;
+
+		struct disk_partitions *parts =
+		   (*ps->create_new_for_disk)(pm->diskdev,
+		   0, pm->dlsize, pm->dlsize, true);
+		if (!parts)
+			return false;
+
+		pm->parts = parts;
+		if (ps->size_limit > 0 && pm->dlsize > ps->size_limit)
+			pm->dlsize = ps->size_limit;
+	}
+
 	return set_bios_geom_with_mbr_guess(pm->parts);
 }
 

Index: src/usr.sbin/sysinst/arch/landisk/md.c
diff -u src/usr.sbin/sysinst/arch/landisk/md.c:1.5 src/usr.sbin/sysinst/arch/landisk/md.c:1.6
--- src/usr.sbin/sysinst/arch/landisk/md.c:1.5	Wed Jun 12 06:20:21 2019
+++ src/usr.sbin/sysinst/arch/landisk/md.c	Thu Jun 13 09:36:55 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: md.c,v 1.5 2019/06/12 06:20:21 martin Exp $	*/
+/*	$NetBSD: md.c,v 1.6 2019/06/13 09:36:55 martin Exp $	*/
 
 /*
  * Copyright 1997,2002 Piermont Information Systems Inc.
@@ -58,6 +58,29 @@ md_init_set_status(int flags)
 bool
 md_get_info(struct install_partition_desc *install)
 {
+
+	if (pm->no_mbr || pm->no_part)
+		return true;
+
+	if (pm->parts == NULL) {
+
+		const struct disk_partitioning_scheme *ps =
+		    select_part_scheme(pm, NULL, true, NULL);
+
+		if (!ps)
+			return true;
+
+		struct disk_partitions *parts =
+		   (*ps->create_new_for_disk)(pm->diskdev,
+		   0, pm->dlsize, pm->dlsize, true);
+		if (!parts)
+			return false;
+
+		pm->parts = parts;
+		if (ps->size_limit > 0 && pm->dlsize > ps->size_limit)
+			pm->dlsize = ps->size_limit;
+	}
+
 	return set_bios_geom_with_mbr_guess(pm->parts);
 }
 

Index: src/usr.sbin/sysinst/arch/ofppc/md.c
diff -u src/usr.sbin/sysinst/arch/ofppc/md.c:1.4 src/usr.sbin/sysinst/arch/ofppc/md.c:1.5
--- src/usr.sbin/sysinst/arch/ofppc/md.c:1.4	Wed Jun 12 06:20:22 2019
+++ src/usr.sbin/sysinst/arch/ofppc/md.c	Thu Jun 13 09:36:55 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: md.c,v 1.4 2019/06/12 06:20:22 martin Exp $	*/
+/*	$NetBSD: md.c,v 1.5 2019/06/13 09:36:55 martin Exp $	*/
 
 /*
  * Copyright 1997 Piermont Information Systems Inc.
@@ -79,6 +79,29 @@ md_get_info(struct install_partition_des
 	if (check_rdb())
 		return true;
 
+
+	if (pm->no_mbr || pm->no_part)
+		return true;
+
+	if (pm->parts == NULL) {
+
+		const struct disk_partitioning_scheme *ps =
+		    select_part_scheme(pm, NULL, true, NULL);
+
+		if (!ps)
+			return true;
+
+		struct disk_partitions *parts =
+		   (*ps->create_new_for_disk)(pm->diskdev,
+		   0, pm->dlsize, pm->dlsize, true);
+		if (!parts)
+			return false;
+
+		pm->parts = parts;
+		if (ps->size_limit > 0 && pm->dlsize > ps->size_limit)
+			pm->dlsize = ps->size_limit;
+	}
+
 	return set_bios_geom_with_mbr_guess(pm->parts);
 }
 

Index: src/usr.sbin/sysinst/arch/prep/md.c
diff -u src/usr.sbin/sysinst/arch/prep/md.c:1.5 src/usr.sbin/sysinst/arch/prep/md.c:1.6
--- src/usr.sbin/sysinst/arch/prep/md.c:1.5	Wed Jun 12 06:20:22 2019
+++ src/usr.sbin/sysinst/arch/prep/md.c	Thu Jun 13 09:36:55 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: md.c,v 1.5 2019/06/12 06:20:22 martin Exp $	*/
+/*	$NetBSD: md.c,v 1.6 2019/06/13 09:36:55 martin Exp $	*/
 
 /*
  * Copyright 1997 Piermont Information Systems Inc.
@@ -63,6 +63,29 @@ md_init_set_status(int flags)
 bool
 md_get_info(struct install_partition_desc *install)
 {
+
+	if (pm->no_mbr || pm->no_part)
+		return true;
+
+	if (pm->parts == NULL) {
+
+		const struct disk_partitioning_scheme *ps =
+		    select_part_scheme(pm, NULL, true, NULL);
+
+		if (!ps)
+			return true;
+
+		struct disk_partitions *parts =
+		   (*ps->create_new_for_disk)(pm->diskdev,
+		   0, pm->dlsize, pm->dlsize, true);
+		if (!parts)
+			return false;
+
+		pm->parts = parts;
+		if (ps->size_limit > 0 && pm->dlsize > ps->size_limit)
+			pm->dlsize = ps->size_limit;
+	}
+
 	return set_bios_geom_with_mbr_guess(pm->parts);
 }
 

Index: src/usr.sbin/sysinst/arch/sandpoint/md.c
diff -u src/usr.sbin/sysinst/arch/sandpoint/md.c:1.3 src/usr.sbin/sysinst/arch/sandpoint/md.c:1.4
--- src/usr.sbin/sysinst/arch/sandpoint/md.c:1.3	Wed Jun 12 06:20:22 2019
+++ src/usr.sbin/sysinst/arch/sandpoint/md.c	Thu Jun 13 09:36:56 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: md.c,v 1.3 2019/06/12 06:20:22 martin Exp $ */
+/*	$NetBSD: md.c,v 1.4 2019/06/13 09:36:56 martin Exp $ */
 
 /*
  * Copyright 1997 Piermont Information Systems Inc.
@@ -92,6 +92,29 @@ md_init_set_status(int flags)
 bool
 md_get_info(struct install_partition_desc *install)
 {
+
+	if (pm->no_mbr || pm->no_part)
+		return true;
+
+	if (pm->parts == NULL) {
+
+		const struct disk_partitioning_scheme *ps =
+		    select_part_scheme(pm, NULL, true, NULL);
+
+		if (!ps)
+			return true;
+
+		struct disk_partitions *parts =
+		   (*ps->create_new_for_disk)(pm->diskdev,
+		   0, pm->dlsize, pm->dlsize, true);
+		if (!parts)
+			return false;
+
+		pm->parts = parts;
+		if (ps->size_limit > 0 && pm->dlsize > ps->size_limit)
+			pm->dlsize = ps->size_limit;
+	}
+
 	return set_bios_geom_with_mbr_guess(pm->parts);
 }
 

Index: src/usr.sbin/sysinst/arch/zaurus/md.c
diff -u src/usr.sbin/sysinst/arch/zaurus/md.c:1.3 src/usr.sbin/sysinst/arch/zaurus/md.c:1.4
--- src/usr.sbin/sysinst/arch/zaurus/md.c:1.3	Wed Jun 12 06:20:23 2019
+++ src/usr.sbin/sysinst/arch/zaurus/md.c	Thu Jun 13 09:36:56 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: md.c,v 1.3 2019/06/12 06:20:23 martin Exp $	*/
+/*	$NetBSD: md.c,v 1.4 2019/06/13 09:36:56 martin Exp $	*/
 
 /*
  * Copyright 1997 Piermont Information Systems Inc.
@@ -72,6 +72,29 @@ md_init_set_status(int flags)
 bool
 md_get_info(struct install_partition_desc *install)
 {
+
+	if (pm->no_mbr || pm->no_part)
+		return true;
+
+	if (pm->parts == NULL) {
+
+		const struct disk_partitioning_scheme *ps =
+		    select_part_scheme(pm, NULL, true, NULL);
+
+		if (!ps)
+			return true;
+
+		struct disk_partitions *parts =
+		   (*ps->create_new_for_disk)(pm->diskdev,
+		   0, pm->dlsize, pm->dlsize, true);
+		if (!parts)
+			return false;
+
+		pm->parts = parts;
+		if (ps->size_limit > 0 && pm->dlsize > ps->size_limit)
+			pm->dlsize = ps->size_limit;
+	}
+
 	return set_bios_geom_with_mbr_guess(pm->parts);
 }
 

Reply via email to