Date: Sun, 18 Jan 2009 17:54:03 +0000 (UTC) From: Ulf Lilleengen <lulf@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r187399 - projects/gvinum/sys/geom/vinum Message-ID: <200901181754.n0IHs345081988@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
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);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200901181754.n0IHs345081988>