svn commit: r221972 - head/sys/geom/part

Andrey V. Elsukov ae at FreeBSD.org
Sun May 15 20:03:55 UTC 2011


Author: ae
Date: Sun May 15 20:03:54 2011
New Revision: 221972
URL: http://svn.freebsd.org/changeset/base/221972

Log:
  Add a sysctl kern.geom.part.check_integrity for those who has corrupt
  partition tables and lost an ability to boot after r221788.
  Also unhide an error message from bootverbose, this would help to
  easier determine the problem.

Modified:
  head/sys/geom/part/g_part.c

Modified: head/sys/geom/part/g_part.c
==============================================================================
--- head/sys/geom/part/g_part.c	Sun May 15 19:04:08 2011	(r221971)
+++ head/sys/geom/part/g_part.c	Sun May 15 20:03:54 2011	(r221972)
@@ -39,6 +39,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/mutex.h>
 #include <sys/queue.h>
 #include <sys/sbuf.h>
+#include <sys/sysctl.h>
 #include <sys/systm.h>
 #include <sys/uuid.h>
 #include <geom/geom.h>
@@ -104,6 +105,13 @@ struct g_part_alias_list {
 	{ "netbsd-swap", G_PART_ALIAS_NETBSD_SWAP },
 };
 
+SYSCTL_DECL(_kern_geom);
+SYSCTL_NODE(_kern_geom, OID_AUTO, part, CTLFLAG_RW, 0, "GEOM_PART stuff");
+static u_int check_integrity = 1;
+TUNABLE_INT("kern.geom.part.check_integrity", &check_integrity);
+SYSCTL_UINT(_kern_geom_part, OID_AUTO, check_integrity, CTLFLAG_RW,
+    &check_integrity, 1, "Enable integrity checking");
+
 /*
  * The GEOM partitioning class.
  */
@@ -267,9 +275,12 @@ g_part_check_integrity(struct g_part_tab
 	}
 	return (0);
 fail:
-	if (bootverbose)
-		printf("GEOM_PART: integrity check failed (%s, %s)\n",
-		    pp->name, table->gpt_scheme->name);
+	printf("GEOM_PART: integrity check failed (%s, %s)\n", pp->name,
+	    table->gpt_scheme->name);
+	if (check_integrity == 0) {
+		table->gpt_corrupt = 1;
+		return (0);
+	}
 	return (EINVAL);
 }
 


More information about the svn-src-head mailing list