svn commit: r305415 - head/usr.sbin/bsdinstall/partedit

Wojciech Macek wma at FreeBSD.org
Mon Sep 5 08:42:38 UTC 2016


Author: wma
Date: Mon Sep  5 08:42:36 2016
New Revision: 305415
URL: https://svnweb.freebsd.org/changeset/base/305415

Log:
  bsdinstall: add warning when unsupported partition is modified
  
  Right now is possible to modify bootable partition type to
  non-bootable type without getting warning from partedit.
  Example: if you auto parition drive for arm64, you will
  get freebsd-ufs as bootable partition; now you are able
  to change bootable partition type to freebsd-zfs; there
  will be no warning and the system will install but
  will not be bootable afterwards.
  
  After this fix, partedit will issue the same warning it
  does when user attempts to create bootable partition of
  not supported type, notyfing a user about incoming
  problem and allowing to think the decision over before
  commiting the schema.
  
  This has been tested on amd64 and arm64.
  
  Obtained from:         Semihalf
  Submitted by:          Dominik Ermel <der at semihalf.com>
  Sponsored by:          Cavium
  Reviewed by:           nwhitehorn
  Differential Revision: https://reviews.freebsd.org/D6879

Modified:
  head/usr.sbin/bsdinstall/partedit/gpart_ops.c

Modified: head/usr.sbin/bsdinstall/partedit/gpart_ops.c
==============================================================================
--- head/usr.sbin/bsdinstall/partedit/gpart_ops.c	Mon Sep  5 08:27:04 2016	(r305414)
+++ head/usr.sbin/bsdinstall/partedit/gpart_ops.c	Mon Sep  5 08:42:36 2016	(r305415)
@@ -617,6 +617,20 @@ editpart:
 	if (choice) /* Cancel pressed */
 		goto endedit;
 
+	/* If this is the root partition, check that this fs is bootable */
+	if (strcmp(items[2].text, "/") == 0 && !is_fs_bootable(scheme,
+	    items[0].text)) {
+		char message[512];
+		sprintf(message, "This file system (%s) is not bootable "
+		    "on this system. Are you sure you want to proceed?",
+		    items[0].text);
+		dialog_vars.defaultno = TRUE;
+		choice = dialog_yesno("Warning", message, 0, 0);
+		dialog_vars.defaultno = FALSE;
+		if (choice == 1) /* cancel */
+			goto editpart;
+	}
+
 	/* Check if the label has a / in it */
 	if (strchr(items[3].text, '/') != NULL) {
 		dialog_msgbox("Error", "Label contains a /, which is not an "


More information about the svn-src-head mailing list