From owner-svn-src-stable@FreeBSD.ORG Fri Apr 5 10:35:37 2013 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 74122D98; Fri, 5 Apr 2013 10:35:37 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 63A0CDE5; Fri, 5 Apr 2013 10:35:37 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r35AZb5P041987; Fri, 5 Apr 2013 10:35:37 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r35AZaTW041976; Fri, 5 Apr 2013 10:35:36 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201304051035.r35AZaTW041976@svn.freebsd.org> From: Alexander Motin Date: Fri, 5 Apr 2013 10:35:36 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r249148 - in stable/9/sys/geom: . bde uncompress uzip X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 05 Apr 2013 10:35:37 -0000 Author: mav Date: Fri Apr 5 10:35:36 2013 New Revision: 249148 URL: http://svnweb.freebsd.org/changeset/base/249148 Log: MFC r238198 (by trasz): Fix orphan() methods of several GEOM classes to not assume that there is an error set on the provider. With GEOM resizing, class can become orphaned when it doesn't implement resize() method and the provider size decreases. Modified: stable/9/sys/geom/bde/g_bde.c stable/9/sys/geom/geom_aes.c stable/9/sys/geom/geom_slice.c stable/9/sys/geom/uncompress/g_uncompress.c stable/9/sys/geom/uzip/g_uzip.c Directory Properties: stable/9/sys/ (props changed) Modified: stable/9/sys/geom/bde/g_bde.c ============================================================================== --- stable/9/sys/geom/bde/g_bde.c Fri Apr 5 10:30:37 2013 (r249147) +++ stable/9/sys/geom/bde/g_bde.c Fri Apr 5 10:35:36 2013 (r249148) @@ -77,19 +77,15 @@ g_bde_orphan(struct g_consumer *cp) struct g_geom *gp; struct g_provider *pp; struct g_bde_softc *sc; - int error; g_trace(G_T_TOPOLOGY, "g_bde_orphan(%p/%s)", cp, cp->provider->name); g_topology_assert(); - KASSERT(cp->provider->error != 0, - ("g_bde_orphan with error == 0")); gp = cp->geom; sc = gp->softc; gp->flags |= G_GEOM_WITHER; - error = cp->provider->error; LIST_FOREACH(pp, &gp->provider, provider) - g_orphan_provider(pp, error); + g_orphan_provider(pp, ENXIO); bzero(sc, sizeof(struct g_bde_softc)); /* destroy evidence */ return; } Modified: stable/9/sys/geom/geom_aes.c ============================================================================== --- stable/9/sys/geom/geom_aes.c Fri Apr 5 10:30:37 2013 (r249147) +++ stable/9/sys/geom/geom_aes.c Fri Apr 5 10:35:36 2013 (r249148) @@ -241,12 +241,10 @@ g_aes_orphan(struct g_consumer *cp) g_trace(G_T_TOPOLOGY, "g_aes_orphan(%p/%s)", cp, cp->provider->name); g_topology_assert(); - KASSERT(cp->provider->error != 0, - ("g_aes_orphan with error == 0")); gp = cp->geom; sc = gp->softc; - g_wither_geom(gp, cp->provider->error); + g_wither_geom(gp, ENXIO); bzero(sc, sizeof(struct g_aes_softc)); /* destroy evidence */ g_free(sc); return; Modified: stable/9/sys/geom/geom_slice.c ============================================================================== --- stable/9/sys/geom/geom_slice.c Fri Apr 5 10:30:37 2013 (r249147) +++ stable/9/sys/geom/geom_slice.c Fri Apr 5 10:35:36 2013 (r249148) @@ -522,10 +522,8 @@ g_slice_orphan(struct g_consumer *cp) g_trace(G_T_TOPOLOGY, "g_slice_orphan(%p/%s)", cp, cp->provider->name); g_topology_assert(); - KASSERT(cp->provider->error != 0, - ("g_slice_orphan with error == 0")); /* XXX: Not good enough we leak the softc and its suballocations */ g_slice_free(cp->geom->softc); - g_wither_geom(cp->geom, cp->provider->error); + g_wither_geom(cp->geom, ENXIO); } Modified: stable/9/sys/geom/uncompress/g_uncompress.c ============================================================================== --- stable/9/sys/geom/uncompress/g_uncompress.c Fri Apr 5 10:30:37 2013 (r249147) +++ stable/9/sys/geom/uncompress/g_uncompress.c Fri Apr 5 10:35:36 2013 (r249148) @@ -406,13 +406,11 @@ g_uncompress_orphan(struct g_consumer *c g_trace(G_T_TOPOLOGY, "%s(%p/%s)", __func__, cp, cp->provider->name); g_topology_assert(); - KASSERT(cp->provider->error != 0, - ("g_uncompress_orphan with error == 0")); gp = cp->geom; g_uncompress_softc_free(gp->softc, gp); gp->softc = NULL; - g_wither_geom(gp, cp->provider->error); + g_wither_geom(gp, ENXIO); } static int Modified: stable/9/sys/geom/uzip/g_uzip.c ============================================================================== --- stable/9/sys/geom/uzip/g_uzip.c Fri Apr 5 10:30:37 2013 (r249147) +++ stable/9/sys/geom/uzip/g_uzip.c Fri Apr 5 10:35:36 2013 (r249148) @@ -313,13 +313,11 @@ g_uzip_orphan(struct g_consumer *cp) g_trace(G_T_TOPOLOGY, "g_uzip_orphan(%p/%s)", cp, cp->provider->name); g_topology_assert(); - KASSERT(cp->provider->error != 0, - ("g_uzip_orphan with error == 0")); gp = cp->geom; g_uzip_softc_free(gp->softc, gp); gp->softc = NULL; - g_wither_geom(gp, cp->provider->error); + g_wither_geom(gp, ENXIO); } static int