mirror of
https://github.com/opnsense/src.git
synced 2026-06-09 08:43:19 -04:00
Single concat or striped plexes don't need no special initialization
if their subdisks are all available, so let them be brought up.
This commit is contained in:
parent
9e16d66689
commit
b916fcec4d
2 changed files with 21 additions and 3 deletions
|
|
@ -127,6 +127,7 @@ void
|
|||
gv_start_vol(struct gv_volume *v)
|
||||
{
|
||||
struct gv_plex *p;
|
||||
struct gv_sd *s;
|
||||
|
||||
KASSERT(v != NULL, ("gv_start_vol: NULL v"));
|
||||
|
||||
|
|
@ -145,6 +146,11 @@ gv_start_vol(struct gv_volume *v)
|
|||
default:
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
LIST_FOREACH(s, &p->subdisks, in_plex) {
|
||||
gv_set_sd_state(s, GV_SD_UP,
|
||||
GV_SETSTATE_CONFIG);
|
||||
}
|
||||
}
|
||||
} else
|
||||
gv_sync(v);
|
||||
|
|
|
|||
|
|
@ -138,10 +138,22 @@ gv_set_sd_state(struct gv_sd *s, int newstate, int flags)
|
|||
|
||||
case GV_SD_STALE:
|
||||
/*
|
||||
* A stale subdisk can't be brought up directly, it
|
||||
* needs to be revived or initialized first.
|
||||
* A stale subdisk can be brought up only if it's part
|
||||
* of a concat or striped plex that's the only one in a
|
||||
* volume, or if the subdisk isn't attached to a plex.
|
||||
* Otherwise it needs to be revived or initialized
|
||||
* first.
|
||||
*/
|
||||
/* FALLTHROUGH */
|
||||
p = s->plex_sc;
|
||||
if (p == NULL)
|
||||
break;
|
||||
|
||||
if ((p->org != GV_PLEX_RAID5) &&
|
||||
(p->vol_sc->plexcount == 1))
|
||||
break;
|
||||
else
|
||||
return (-1);
|
||||
|
||||
default:
|
||||
return (-1);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue