diff options
author | marcel <marcel@FreeBSD.org> | 2010-04-25 01:56:39 +0000 |
---|---|---|
committer | marcel <marcel@FreeBSD.org> | 2010-04-25 01:56:39 +0000 |
commit | d69a8fd3dce93bc8063343da1d1d7a49be7f5ffd (patch) | |
tree | 752f6f944dafb586dcdfde43959d0cc94d130051 | |
parent | 365394e3ab6337456981fbb1d6e3104011f4100d (diff) | |
download | FreeBSD-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.c | 9 |
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); |