From aed12d5ff8f37b7419863de1b1b3fcede63018f7 Mon Sep 17 00:00:00 2001 From: Olivier Houchard Date: Tue, 6 Mar 2007 12:08:38 +0000 Subject: [PATCH] Backout rev 1.17, msleep() can't be used with a spinlock. Pointy hat to: cognet --- sys/kern/kern_alq.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/sys/kern/kern_alq.c b/sys/kern/kern_alq.c index de9d25f979f..49aa0ace7d8 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) {