diff options
author | grog <grog@FreeBSD.org> | 2000-01-05 22:59:36 +0000 |
---|---|---|
committer | grog <grog@FreeBSD.org> | 2000-01-05 22:59:36 +0000 |
commit | d2a72ec9012850a78e35076176d864117fbf923c (patch) | |
tree | cd664b5155d891446c720860ff69f40da7698791 /sys/dev/vinum/vinumlock.c | |
parent | 54de424eb011d6673dbaa076dedf535fe0b6b4e5 (diff) | |
download | FreeBSD-src-d2a72ec9012850a78e35076176d864117fbf923c.zip FreeBSD-src-d2a72ec9012850a78e35076176d864117fbf923c.tar.gz |
Don't tsleep with PCATCH, it's a wonderful way to hang the system.
Reported-by: Bernd Walter <ticso@cicely.de>
Diffstat (limited to 'sys/dev/vinum/vinumlock.c')
-rw-r--r-- | sys/dev/vinum/vinumlock.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/sys/dev/vinum/vinumlock.c b/sys/dev/vinum/vinumlock.c index 62df004..78c4ce8 100644 --- a/sys/dev/vinum/vinumlock.c +++ b/sys/dev/vinum/vinumlock.c @@ -37,6 +37,7 @@ * otherwise) arising in any way out of the use of this software, even if * advised of the possibility of such damage. * + * $Id: vinumlock.c,v 1.11 1999/10/12 04:35:37 grog Exp grog $ * $FreeBSD$ */ @@ -87,7 +88,7 @@ lockdrive(struct drive *drive) * of conflicts is negligible. */ if ((error = tsleep(&lockdrive, - PRIBIO | PCATCH, + PRIBIO, "vindrv", 0)) != 0) return error; @@ -126,7 +127,7 @@ lockvol(struct volume *vol) * table expansion. The address we choose won't change. */ if ((error = tsleep(&vinum_conf.volume + vol->volno, - PRIBIO | PCATCH, + PRIBIO, "volock", 0)) != 0) return error; @@ -161,7 +162,7 @@ lockplex(struct plex *plex) * table expansion. The address we choose won't change. */ if ((error = tsleep(&vinum_conf.plex + plex->sdnos[0], - PRIBIO | PCATCH, + PRIBIO, "plexlk", 0)) != 0) return error; @@ -248,7 +249,7 @@ lockrange(daddr_t stripe, struct buf *bp, struct plex *plex) #endif plex->lockwaits++; /* waited one more time */ while (lock->stripe) /* wait for it to become free */ - tsleep((void *) lock->stripe, PRIBIO | PCATCH, "vrlock", 2 * hz); + tsleep((void *) lock->stripe, PRIBIO, "vrlock", 2 * hz); break; /* out of the inner level loop */ } } else { @@ -307,7 +308,7 @@ lock_config(void) while ((vinum_conf.flags & VF_LOCKED) != 0) { vinum_conf.flags |= VF_LOCKING; - if ((error = tsleep(&vinum_conf, PRIBIO | PCATCH, "vincfg", 0)) != 0) + if ((error = tsleep(&vinum_conf, PRIBIO, "vincfg", 0)) != 0) return error; } vinum_conf.flags |= VF_LOCKED; |