Date: Thu, 17 Sep 2020 04:39:39 +0000 (UTC) From: Eugene Grosbein <eugen@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r365830 - head/sys/geom/part Message-ID: <202009170439.08H4ddeb092136@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
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;
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202009170439.08H4ddeb092136>