Synchronize unclean mirrors before adding them to a running gmirror.
During gmirror startup, if component mirrors are found to be dirty as is typical after a system crash, the mirrors are synchronized to the mirror with highest priority. However if a gmirror starts without all of its mirrors present, for example because of some transient delays during tasting, the remaining mirrors must be synchronized before they may become active. MFC after: 2 weeks Sponsored by: Dell EMC Isilon
This commit is contained in:
parent
e351474725
commit
db7c508323
@ -2225,7 +2225,9 @@ g_mirror_determine_state(struct g_mirror_disk *disk)
|
|||||||
sc = disk->d_softc;
|
sc = disk->d_softc;
|
||||||
if (sc->sc_syncid == disk->d_sync.ds_syncid) {
|
if (sc->sc_syncid == disk->d_sync.ds_syncid) {
|
||||||
if ((disk->d_flags &
|
if ((disk->d_flags &
|
||||||
G_MIRROR_DISK_FLAG_SYNCHRONIZING) == 0) {
|
G_MIRROR_DISK_FLAG_SYNCHRONIZING) == 0 &&
|
||||||
|
(g_mirror_ndisks(sc, G_MIRROR_DISK_STATE_ACTIVE) == 0 ||
|
||||||
|
(disk->d_flags & G_MIRROR_DISK_FLAG_DIRTY) == 0)) {
|
||||||
/* Disk does not need synchronization. */
|
/* Disk does not need synchronization. */
|
||||||
state = G_MIRROR_DISK_STATE_ACTIVE;
|
state = G_MIRROR_DISK_STATE_ACTIVE;
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user