diff options
author | le <le@FreeBSD.org> | 2004-06-25 18:04:33 +0000 |
---|---|---|
committer | le <le@FreeBSD.org> | 2004-06-25 18:04:33 +0000 |
commit | d754d951b906e8d0c99ea9917952cdfb8c5c9378 (patch) | |
tree | 58b8d1bd65cc44a93c2827fe35cd9a28583260b3 /sys/geom/vinum | |
parent | 1317204d7bf9cdcdd06de82024f406400388b2c1 (diff) | |
download | FreeBSD-src-d754d951b906e8d0c99ea9917952cdfb8c5c9378.zip FreeBSD-src-d754d951b906e8d0c99ea9917952cdfb8c5c9378.tar.gz |
Mark a plex as 'newborn' when it is created. This is used to indicate
that new RAID5 plexes need to be initialized first.
Diffstat (limited to 'sys/geom/vinum')
-rw-r--r-- | sys/geom/vinum/geom_vinum.c | 1 | ||||
-rw-r--r-- | sys/geom/vinum/geom_vinum_subr.c | 4 |
2 files changed, 4 insertions, 1 deletions
diff --git a/sys/geom/vinum/geom_vinum.c b/sys/geom/vinum/geom_vinum.c index d4cdbaa..c4e96f4 100644 --- a/sys/geom/vinum/geom_vinum.c +++ b/sys/geom/vinum/geom_vinum.c @@ -384,6 +384,7 @@ gv_create(struct g_geom *gp, struct gctl_req *req) } p->vinumconf = sc; + p->flags |= GV_PLEX_NEWBORN; LIST_INIT(&p->subdisks); LIST_INSERT_HEAD(&sc->plexes, p, plex); } diff --git a/sys/geom/vinum/geom_vinum_subr.c b/sys/geom/vinum/geom_vinum_subr.c index c1fe580..d5e1851 100644 --- a/sys/geom/vinum/geom_vinum_subr.c +++ b/sys/geom/vinum/geom_vinum_subr.c @@ -421,10 +421,12 @@ gv_update_plex_config(struct gv_plex *p) if (p->sdcount == 0) state = GV_PLEX_DOWN; - else if ((p->flags & GV_PLEX_ADDED) || (p->org == GV_PLEX_RAID5)) { + else if ((p->flags & GV_PLEX_ADDED) || + ((p->org == GV_PLEX_RAID5) && (p->flags & GV_PLEX_NEWBORN))) { LIST_FOREACH(s, &p->subdisks, in_plex) s->state = GV_SD_STALE; p->flags &= ~GV_PLEX_ADDED; + p->flags &= ~GV_PLEX_NEWBORN; p->state = GV_PLEX_DOWN; } } |