summaryrefslogtreecommitdiffstats
path: root/sbin/geom/class
diff options
context:
space:
mode:
authormav <mav@FreeBSD.org>2015-03-26 12:17:47 +0000
committermav <mav@FreeBSD.org>2015-03-26 12:17:47 +0000
commitdc6dad56dd84e00efff878f9a1c3eac55c877ad8 (patch)
treeaae3d593194c3b8ad7d235fe3aad64e609c07a39 /sbin/geom/class
parenta8867c5ea6c39965acbf985bb2358e608e82077d (diff)
downloadFreeBSD-src-dc6dad56dd84e00efff878f9a1c3eac55c877ad8.zip
FreeBSD-src-dc6dad56dd84e00efff878f9a1c3eac55c877ad8.tar.gz
Make GEOM_PART work in presence of previous withered self.
MFC after: 2 weeks Sponsored by: iXsystems, Inc.
Diffstat (limited to 'sbin/geom/class')
-rw-r--r--sbin/geom/class/part/geom_part.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/sbin/geom/class/part/geom_part.c b/sbin/geom/class/part/geom_part.c
index 8416954..133e8f8 100644
--- a/sbin/geom/class/part/geom_part.c
+++ b/sbin/geom/class/part/geom_part.c
@@ -207,15 +207,20 @@ find_class(struct gmesh *mesh, const char *name)
static struct ggeom *
find_geom(struct gclass *classp, const char *name)
{
- struct ggeom *gp;
+ struct ggeom *gp, *wgp;
if (strncmp(name, _PATH_DEV, sizeof(_PATH_DEV) - 1) == 0)
name += sizeof(_PATH_DEV) - 1;
+ wgp = NULL;
LIST_FOREACH(gp, &classp->lg_geom, lg_geom) {
- if (strcmp(gp->lg_name, name) == 0)
+ if (strcmp(gp->lg_name, name) != 0)
+ continue;
+ if (find_geomcfg(gp, "wither") == NULL)
return (gp);
+ else
+ wgp = gp;
}
- return (NULL);
+ return (wgp);
}
static const char *
@@ -609,6 +614,8 @@ gpart_show_geom(struct ggeom *gp, const char *element, int show_providers)
off_t length, secsz;
int idx, wblocks, wname, wmax;
+ if (find_geomcfg(gp, "wither"))
+ return;
scheme = find_geomcfg(gp, "scheme");
if (scheme == NULL)
errx(EXIT_FAILURE, "Scheme not found for geom %s", gp->lg_name);
OpenPOWER on IntegriCloud