From owner-svn-src-projects@FreeBSD.ORG Sun Jan 18 17:54:04 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 13391106566B; Sun, 18 Jan 2009 17:54:04 +0000 (UTC) (envelope-from lulf@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 02AB38FC0C; Sun, 18 Jan 2009 17:54:04 +0000 (UTC) (envelope-from lulf@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n0IHs3QJ081990; Sun, 18 Jan 2009 17:54:03 GMT (envelope-from lulf@svn.freebsd.org) Received: (from lulf@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n0IHs345081988; Sun, 18 Jan 2009 17:54:03 GMT (envelope-from lulf@svn.freebsd.org) Message-Id: <200901181754.n0IHs345081988@svn.freebsd.org> From: Ulf Lilleengen Date: Sun, 18 Jan 2009 17:54:03 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r187399 - projects/gvinum/sys/geom/vinum X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 18 Jan 2009 17:54:04 -0000 Author: lulf Date: Sun Jan 18 17:54:03 2009 New Revision: 187399 URL: http://svn.freebsd.org/changeset/base/187399 Log: - Make it possible to move disks from a mirrored volume while mounted. Modified: projects/gvinum/sys/geom/vinum/geom_vinum_move.c projects/gvinum/sys/geom/vinum/geom_vinum_subr.c Modified: projects/gvinum/sys/geom/vinum/geom_vinum_move.c ============================================================================== --- projects/gvinum/sys/geom/vinum/geom_vinum_move.c Sun Jan 18 17:07:48 2009 (r187398) +++ projects/gvinum/sys/geom/vinum/geom_vinum_move.c Sun Jan 18 17:54:03 2009 (r187399) @@ -113,9 +113,9 @@ gv_move_sd(struct gv_softc *sc, struct g d = cursd->drive_sc; - /* XXX: Can't do a move without unmounting. Perhaps okay. */ - if (gv_consumer_is_open(d->consumer) || - gv_consumer_is_open(destination->consumer)) { + if ((gv_consumer_is_open(d->consumer) || + gv_consumer_is_open(destination->consumer)) && + !(flags && GV_FLAG_F)) { G_VINUM_DEBUG(0, "consumers on current and destination drive " " still open"); return (GV_ERR_ISBUSY); @@ -180,6 +180,9 @@ gv_move_sd(struct gv_softc *sc, struct g } gv_sd_to_plex(newsd, p); LIST_INSERT_HEAD(&sc->subdisks, newsd, sd); - + /* Update volume size of plex. */ + if (p->vol_sc != NULL) + gv_update_vol_size(p->vol_sc, gv_vol_size(p->vol_sc)); + gv_save_config(p->vinumconf); return (0); } Modified: projects/gvinum/sys/geom/vinum/geom_vinum_subr.c ============================================================================== --- projects/gvinum/sys/geom/vinum/geom_vinum_subr.c Sun Jan 18 17:07:48 2009 (r187398) +++ projects/gvinum/sys/geom/vinum/geom_vinum_subr.c Sun Jan 18 17:54:03 2009 (r187399) @@ -431,9 +431,6 @@ gv_plex_size(struct gv_plex *p) KASSERT(p != NULL, ("gv_plex_size: NULL p")); - if (p->sdcount == 0) - return (0); - /* Adjust the size of our plex. */ size = 0; sdcount = gv_sdcount(p, 1);