Not only a request from us can be passed to g_{mirror,raid3}_worker()
function, but also a request to us, in which case checking bio_cflags is wrong, because the class above us is controling it, not we. MFC after: 1 week
This commit is contained in:
parent
89cf3df166
commit
de6f1c7c6c
@ -1813,12 +1813,19 @@ g_mirror_worker(void *arg)
|
||||
bioq_remove(&sc->sc_queue, bp);
|
||||
mtx_unlock(&sc->sc_queue_mtx);
|
||||
|
||||
if ((bp->bio_cflags & G_MIRROR_BIO_FLAG_REGULAR) != 0)
|
||||
g_mirror_regular_request(bp);
|
||||
else if ((bp->bio_cflags & G_MIRROR_BIO_FLAG_SYNC) != 0)
|
||||
g_mirror_sync_request(bp);
|
||||
else
|
||||
if (bp->bio_to != sc->sc_provider) {
|
||||
if ((bp->bio_cflags & G_MIRROR_BIO_FLAG_REGULAR) != 0)
|
||||
g_mirror_regular_request(bp);
|
||||
else if ((bp->bio_cflags & G_MIRROR_BIO_FLAG_SYNC) != 0)
|
||||
g_mirror_sync_request(bp);
|
||||
else {
|
||||
KASSERT(0,
|
||||
("Invalid request cflags=0x%hhx to=%s.",
|
||||
bp->bio_cflags, bp->bio_to->name));
|
||||
}
|
||||
} else {
|
||||
g_mirror_register_request(bp);
|
||||
}
|
||||
G_MIRROR_DEBUG(5, "%s: I'm here 9.", __func__);
|
||||
}
|
||||
}
|
||||
|
@ -2061,11 +2061,17 @@ g_raid3_worker(void *arg)
|
||||
bioq_remove(&sc->sc_queue, bp);
|
||||
mtx_unlock(&sc->sc_queue_mtx);
|
||||
|
||||
if ((bp->bio_cflags & G_RAID3_BIO_CFLAG_REGULAR) != 0)
|
||||
g_raid3_regular_request(bp);
|
||||
else if ((bp->bio_cflags & G_RAID3_BIO_CFLAG_SYNC) != 0)
|
||||
g_raid3_sync_request(bp);
|
||||
else if (g_raid3_register_request(bp) != 0) {
|
||||
if (bp->bio_to != sc->sc_provider) {
|
||||
if ((bp->bio_cflags & G_RAID3_BIO_CFLAG_REGULAR) != 0)
|
||||
g_raid3_regular_request(bp);
|
||||
else if ((bp->bio_cflags & G_RAID3_BIO_CFLAG_SYNC) != 0)
|
||||
g_raid3_sync_request(bp);
|
||||
else {
|
||||
KASSERT(0,
|
||||
("Invalid request cflags=0x%hhx to=%s.",
|
||||
bp->bio_cflags, bp->bio_to->name));
|
||||
}
|
||||
} else if (g_raid3_register_request(bp) != 0) {
|
||||
mtx_lock(&sc->sc_queue_mtx);
|
||||
bioq_insert_head(&sc->sc_queue, bp);
|
||||
/*
|
||||
|
Loading…
Reference in New Issue
Block a user