diff options
author | Kenneth R Westerback <krw@cvs.openbsd.org> | 2009-11-22 14:14:12 +0000 |
---|---|---|
committer | Kenneth R Westerback <krw@cvs.openbsd.org> | 2009-11-22 14:14:12 +0000 |
commit | 2c11f73dede318e822acc869f050872a3bce9c59 (patch) | |
tree | bc79276a3887621718c2b035dc5adbf2daf52b93 /sys/dev/ic/cac.c | |
parent | ccc027bb2ba3e9fb45f59ef7ce17214694d0f665 (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.c | 7 |
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); |