From 5523c82c1a804f3ce9dfff97afe0b61b24527861 Mon Sep 17 00:00:00 2001 From: Alexander Motin Date: Thu, 26 Mar 2015 12:17:47 +0000 Subject: Make GEOM_PART work in presence of previous withered self. MFC after: 2 weeks Sponsored by: iXsystems, Inc. --- sbin/geom/class/part/geom_part.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'sbin/geom/class/part') diff --git a/sbin/geom/class/part/geom_part.c b/sbin/geom/class/part/geom_part.c index 841695437e58..133e8f8281e9 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); -- cgit v1.2.3