summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormarcel <marcel@FreeBSD.org>2010-04-25 01:56:39 +0000
committermarcel <marcel@FreeBSD.org>2010-04-25 01:56:39 +0000
commitd69a8fd3dce93bc8063343da1d1d7a49be7f5ffd (patch)
tree752f6f944dafb586dcdfde43959d0cc94d130051
parent365394e3ab6337456981fbb1d6e3104011f4100d (diff)
downloadFreeBSD-src-d69a8fd3dce93bc8063343da1d1d7a49be7f5ffd.zip
FreeBSD-src-d69a8fd3dce93bc8063343da1d1d7a49be7f5ffd.tar.gz
Re-calculate a geometry when reprobing as well.
PR: kern/145452 Reported by: "Andrey V. Elsukov" <bu7cher@yandex.ru>
-rw-r--r--sys/geom/part/g_part.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/sys/geom/part/g_part.c b/sys/geom/part/g_part.c
index 7a979da..f47ac08 100644
--- a/sys/geom/part/g_part.c
+++ b/sys/geom/part/g_part.c
@@ -1166,6 +1166,15 @@ g_part_ctl_undo(struct gctl_req *req, struct g_part_parms *gpp)
return (0);
}
table = gp->softc;
+
+ /*
+ * Synthesize a disk geometry. Some partitioning schemes
+ * depend on it and since some file systems need it even
+ * when the partitition scheme doesn't, we do it here in
+ * scheme-independent code.
+ */
+ pp = cp->provider;
+ g_part_geometry(table, cp, pp->mediasize / pp->sectorsize);
}
error = G_PART_READ(table, cp);
OpenPOWER on IntegriCloud