diff options
author | cognet <cognet@FreeBSD.org> | 2007-03-06 12:08:38 +0000 |
---|---|---|
committer | cognet <cognet@FreeBSD.org> | 2007-03-06 12:08:38 +0000 |
commit | 3b19c338be2c3115d1a96c51ee4eaebe299cb41f (patch) | |
tree | 3a4a90ec837f7753623a754feb152dc849c92035 /sys/kern/kern_alq.c | |
parent | d62d6373edc307b540f9369298e260f67e2019ac (diff) | |
download | FreeBSD-src-3b19c338be2c3115d1a96c51ee4eaebe299cb41f.zip FreeBSD-src-3b19c338be2c3115d1a96c51ee4eaebe299cb41f.tar.gz |
Backout rev 1.17, msleep() can't be used with a spinlock.
Pointy hat to: cognet
Diffstat (limited to 'sys/kern/kern_alq.c')
-rw-r--r-- | sys/kern/kern_alq.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/sys/kern/kern_alq.c b/sys/kern/kern_alq.c index de9d25f..49aa0ac 100644 --- a/sys/kern/kern_alq.c +++ b/sys/kern/kern_alq.c @@ -224,7 +224,9 @@ alq_shutdown(struct alq *alq) /* Drain IO */ while (alq->aq_flags & (AQ_FLUSHING|AQ_ACTIVE)) { alq->aq_flags |= AQ_WANTED; - msleep(alq, &(alq)->aq_mtx, PWAIT, "aldclose", 0); + ALQ_UNLOCK(alq); + tsleep(alq, PWAIT, "aldclose", 0); + ALQ_LOCK(alq); } ALQ_UNLOCK(alq); @@ -431,7 +433,9 @@ alq_get(struct alq *alq, int waitok) (ale = alq->aq_entfree) == NULL && (waitok & ALQ_WAITOK)) { alq->aq_flags |= AQ_WANTED; - msleep(alq, &(alq)->aq_mtx, PWAIT, "alqget", 0); + ALQ_UNLOCK(alq); + tsleep(alq, PWAIT, "alqget", 0); + ALQ_LOCK(alq); } if (ale != NULL) { |