Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 5 Feb 2012 16:08:45 +0000 (UTC)
From:      Nathan Whitehorn <nwhitehorn@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org
Subject:   svn commit: r231020 - stable/9/usr.sbin/bsdinstall/partedit
Message-ID:  <201202051608.q15G8jqp090305@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
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);
 }
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201202051608.q15G8jqp090305>