summaryrefslogtreecommitdiff
path: root/sys/dev/ic/cac.c
diff options
context:
space:
mode:
authorKenneth R Westerback <krw@cvs.openbsd.org>2009-11-22 14:14:12 +0000
committerKenneth R Westerback <krw@cvs.openbsd.org>2009-11-22 14:14:12 +0000
commit2c11f73dede318e822acc869f050872a3bce9c59 (patch)
treebc79276a3887621718c2b035dc5adbf2daf52b93 /sys/dev/ic/cac.c
parentccc027bb2ba3e9fb45f59ef7ce17214694d0f665 (diff)
Bring last drivers fully into the NO_CCB world by replacing
TRY_AGAIN_LATER uses with equivalent NO_CCB. Eliminates confusion between the two as was always intended. buf I/O's that can't be started get pushed back onto the front of the queue and retried. Others get sent back to originator as failures. No more epi-cycle looping inside the SCSI midlayer hoping the problem goes away. Various testers, no objection from miod@ as vs(4) was tested by nick@.
Diffstat (limited to 'sys/dev/ic/cac.c')
-rw-r--r--sys/dev/ic/cac.c7
1 files changed, 2 insertions, 5 deletions
diff --git a/sys/dev/ic/cac.c b/sys/dev/ic/cac.c
index 125c2011f39..4ca8b8e6269 100644
--- a/sys/dev/ic/cac.c
+++ b/sys/dev/ic/cac.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: cac.c,v 1.32 2009/09/30 19:16:23 miod Exp $ */
+/* $OpenBSD: cac.c,v 1.33 2009/11/22 14:14:10 krw Exp $ */
/* $NetBSD: cac.c,v 1.15 2000/11/08 19:20:35 ad Exp $ */
/*
@@ -718,12 +718,9 @@ cac_scsi_cmd(xs)
if ((error = cac_cmd(sc, op, xs->data, blockcnt * DEV_BSIZE,
target, blockno, flags, xs))) {
- if (error == ENOMEM) {
+ if (error == ENOMEM || error == EBUSY) {
splx(s);
return (NO_CCB);
- } else if (poll) {
- splx(s);
- return (TRY_AGAIN_LATER);
} else {
xs->error = XS_DRIVER_STUFFUP;
scsi_done(xs);