diff options
author | mav <mav@FreeBSD.org> | 2010-01-05 10:52:21 +0000 |
---|---|---|
committer | mav <mav@FreeBSD.org> | 2010-01-05 10:52:21 +0000 |
commit | a615da72de7a089c0527af83810f91a04420bd0d (patch) | |
tree | 5e040d6e57294b93944dac8c135a654b0d21c17c /sys/geom/raid3 | |
parent | 1073c59bbd60e55d1d0ce707b510c1c80921a313 (diff) | |
download | FreeBSD-src-a615da72de7a089c0527af83810f91a04420bd0d.zip FreeBSD-src-a615da72de7a089c0527af83810f91a04420bd0d.tar.gz |
Move wakeup() out of mutex to reduce contention.
Diffstat (limited to 'sys/geom/raid3')
-rw-r--r-- | sys/geom/raid3/g_raid3.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/sys/geom/raid3/g_raid3.c b/sys/geom/raid3/g_raid3.c index dc180f7..08792fe 100644 --- a/sys/geom/raid3/g_raid3.c +++ b/sys/geom/raid3/g_raid3.c @@ -1271,9 +1271,9 @@ g_raid3_done(struct bio *bp) G_RAID3_LOGREQ(3, bp, "Regular request done (error=%d).", bp->bio_error); mtx_lock(&sc->sc_queue_mtx); bioq_insert_head(&sc->sc_queue, bp); + mtx_unlock(&sc->sc_queue_mtx); wakeup(sc); wakeup(&sc->sc_queue); - mtx_unlock(&sc->sc_queue_mtx); } static void @@ -1379,9 +1379,9 @@ g_raid3_sync_done(struct bio *bp) bp->bio_cflags |= G_RAID3_BIO_CFLAG_SYNC; mtx_lock(&sc->sc_queue_mtx); bioq_insert_head(&sc->sc_queue, bp); + mtx_unlock(&sc->sc_queue_mtx); wakeup(sc); wakeup(&sc->sc_queue); - mtx_unlock(&sc->sc_queue_mtx); } static void @@ -1459,9 +1459,9 @@ g_raid3_start(struct bio *bp) } mtx_lock(&sc->sc_queue_mtx); bioq_insert_tail(&sc->sc_queue, bp); + mtx_unlock(&sc->sc_queue_mtx); G_RAID3_DEBUG(4, "%s: Waking up %p.", __func__, sc); wakeup(sc); - mtx_unlock(&sc->sc_queue_mtx); } /* |