summaryrefslogtreecommitdiffstats
path: root/sys/geom/vinum
diff options
context:
space:
mode:
authorlulf <lulf@FreeBSD.org>2010-03-08 21:16:28 +0000
committerlulf <lulf@FreeBSD.org>2010-03-08 21:16:28 +0000
commitdb22efb244abb98d596c581ce7827650e9515af0 (patch)
tree51c18e1137d3777f99c188c619876eceb9254ac7 /sys/geom/vinum
parent136227b4e7f8ad450666d0f824b7779d767aad7c (diff)
downloadFreeBSD-src-db22efb244abb98d596c581ce7827650e9515af0.zip
FreeBSD-src-db22efb244abb98d596c581ce7827650e9515af0.tar.gz
- Set missing flag when initiating a plex rebuild with the rebuildparity
command. - Check if plex is already syncing or rebuilding before initiating a parity rebuild or check.
Diffstat (limited to 'sys/geom/vinum')
-rw-r--r--sys/geom/vinum/geom_vinum.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/sys/geom/vinum/geom_vinum.c b/sys/geom/vinum/geom_vinum.c
index b921a1b..479fc8a 100644
--- a/sys/geom/vinum/geom_vinum.c
+++ b/sys/geom/vinum/geom_vinum.c
@@ -788,7 +788,15 @@ gv_worker(void *arg)
"completely accessible", p->name);
break;
}
+ if (p->flags & GV_PLEX_SYNCING ||
+ p->flags & GV_PLEX_REBUILDING ||
+ p->flags & GV_PLEX_GROWING) {
+ G_VINUM_DEBUG(0, "plex %s is busy with "
+ "syncing or parity build", p->name);
+ break;
+ }
p->synced = 0;
+ p->flags |= GV_PLEX_REBUILDING;
g_topology_assert_not();
g_topology_lock();
err = gv_access(p->vol_sc->provider, 1, 1, 0);
@@ -811,6 +819,13 @@ gv_worker(void *arg)
"completely accessible", p->name);
break;
}
+ if (p->flags & GV_PLEX_SYNCING ||
+ p->flags & GV_PLEX_REBUILDING ||
+ p->flags & GV_PLEX_GROWING) {
+ G_VINUM_DEBUG(0, "plex %s is busy with "
+ "syncing or parity build", p->name);
+ break;
+ }
p->synced = 0;
g_topology_assert_not();
g_topology_lock();
OpenPOWER on IntegriCloud