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

Eugene Grosbein eugen at FreeBSD.org
Thu Sep 17 04:39:40 UTC 2020


Author: eugen
Date: Thu Sep 17 04:39:39 2020
New Revision: 365830
URL: https://svnweb.freebsd.org/changeset/base/365830

Log:
  geom_part: make it possible recovering broken GPT after some LBAs cut off
  
  This is followup to r365477.
  
  If pre-formatted device has GPT and a partition covering
  last available LBAs and the device is attached using
  a bridge reducing amount of LBAs, then it could be not enough
  forcing GEOM to use primary GPT. Also, we should make it possible
  to recover GPT and this requires either deleting or resizing the partition.
  
  This change enables "gpart delete" and "gpart resize" commands
  on corrupted GPT with following "gpart recover".
  
  It still does not allow modifying corrupted GPT without
  preliminary setting sysctl kern.geom.part.check_integrity=0
  
  For example:
  
  # gpart show da0
  =>        34  3906963389  da0  GPT  (1.8T) [CORRUPT]
            34      262144    1  ms-reserved  (128M)
        262178        2014       - free -  (1.0M)
        264192  3906764943    2  freebsd-swap  (1.8T)
  # gpart resize -i 2 -s 3900000000 da0
  # gpart recover da0
  
  Reported by:	Alex Korchmar
  MFC after:	3 days

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

Modified: head/sys/geom/part/g_part.c
==============================================================================
--- head/sys/geom/part/g_part.c	Thu Sep 17 02:18:21 2020	(r365829)
+++ head/sys/geom/part/g_part.c	Thu Sep 17 04:39:39 2020	(r365830)
@@ -1852,7 +1852,8 @@ g_part_ctlreq(struct gctl_req *req, struct g_class *mp
 		table = gpp.gpp_geom->softc;
 		if (table != NULL && table->gpt_corrupt &&
 		    ctlreq != G_PART_CTL_DESTROY &&
-		    ctlreq != G_PART_CTL_RECOVER) {
+		    ctlreq != G_PART_CTL_RECOVER &&
+		    geom_part_check_integrity) {
 			gctl_error(req, "%d table '%s' is corrupt",
 			    EPERM, gpp.gpp_geom->name);
 			return;


More information about the svn-src-head mailing list