svn commit: r231020 - stable/9/usr.sbin/bsdinstall/partedit

Nathan Whitehorn nwhitehorn at FreeBSD.org
Sun Feb 5 16:08:46 UTC 2012


Author: nwhitehorn
Date: Sun Feb  5 16:08:45 2012
New Revision: 231020
URL: http://svn.freebsd.org/changeset/base/231020

Log:
  MFC r230309:
  
  Warn if trying to install over an existing partition, which usually fails
  anyway due to libarchive not being able to overwrite schg flags.
  
  PR:		bin/164278

Modified:
  stable/9/usr.sbin/bsdinstall/partedit/partedit.c
Directory Properties:
  stable/9/usr.sbin/bsdinstall/   (props changed)
  stable/9/usr.sbin/bsdinstall/scripts/   (props changed)

Modified: stable/9/usr.sbin/bsdinstall/partedit/partedit.c
==============================================================================
--- stable/9/usr.sbin/bsdinstall/partedit/partedit.c	Sun Feb  5 15:59:18 2012	(r231019)
+++ stable/9/usr.sbin/bsdinstall/partedit/partedit.c	Sun Feb  5 16:08:45 2012	(r231020)
@@ -240,23 +240,41 @@ delete_part_metadata(const char *name)
 static int
 validate_setup(void)
 {
-	struct partition_metadata *md;
-	int root_found = FALSE;
+	struct partition_metadata *md, *root = NULL;
+	int cancel;
 
 	TAILQ_FOREACH(md, &part_metadata, metadata) {
 		if (md->fstab != NULL && strcmp(md->fstab->fs_file, "/") == 0)
-			root_found = TRUE;
+			root = md;
 
 		/* XXX: Check for duplicate mountpoints */
 	}
 
-	if (!root_found) {
+	if (root == NULL) {
 		dialog_msgbox("Error", "No root partition was found. "
 		    "The root FreeBSD partition must have a mountpoint of '/'.",
 		0, 0, TRUE);
 		return (FALSE);
 	}
 
+	/*
+	 * Check for root partitions that we aren't formatting, which is 
+	 * usually a mistake
+	 */
+	if (root->newfs == NULL) {
+		dialog_vars.defaultno = TRUE;
+		cancel = dialog_yesno("Warning", "The chosen root partition "
+		    "has a preexisting filesystem. If it contains an existing "
+		    "FreeBSD system, please update it with freebsd-update "
+		    "instead of installing a new system on it. The partition "
+		    "can also be erased by pressing \"No\" and then deleting "
+		    "and recreating it. Are you sure you want to proceed?",
+		    0, 0);
+		dialog_vars.defaultno = FALSE;
+		if (cancel)
+			return (FALSE);
+	}
+
 	return (TRUE);
 }
 


More information about the svn-src-stable-9 mailing list