diff options
author | David Gwynne <dlg@cvs.openbsd.org> | 2010-01-12 08:33:20 +0000 |
---|---|---|
committer | David Gwynne <dlg@cvs.openbsd.org> | 2010-01-12 08:33:20 +0000 |
commit | b49e8d180cde1f19078ab76121300e67533adf90 (patch) | |
tree | 0f1748558d64e4eaa5a6d4ead53d7c3b2347f8ef | |
parent | 21ffd6f87ecdc6b955a0813afd8fc3a508a3163f (diff) |
dont let the antisemaphore clear the WAITING flag so NO_CCB doesnt cause
us to loop forever.
follow sdstart through to to an adapters scsi_cmd handler and assume that
handler returns NO_CCB to enjoy the bug in full.
ok kettenis@ krw@ beck@
-rw-r--r-- | sys/scsi/sd.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/scsi/sd.c b/sys/scsi/sd.c index e07a7b1c006..8017da081e1 100644 --- a/sys/scsi/sd.c +++ b/sys/scsi/sd.c @@ -1,4 +1,4 @@ -/* $OpenBSD: sd.c,v 1.179 2010/01/11 11:16:38 krw Exp $ */ +/* $OpenBSD: sd.c,v 1.180 2010/01/12 08:33:19 dlg Exp $ */ /* $NetBSD: sd.c,v 1.111 1997/04/02 02:29:41 mycroft Exp $ */ /*- @@ -704,8 +704,8 @@ sdstart(void *v) return; } mtx_leave(&sc->sc_start_mtx); -restart: CLR(sc->flags, SDF_WAITING); +restart: while (!ISSET(sc->flags, SDF_WAITING) && (bp = sd_buf_dequeue(sc)) != NULL) { /* |