diff options
| author | fvdl <fvdl@NetBSD.org> | 2000-05-27 23:59:58 +0000 |
|---|---|---|
| committer | fvdl <fvdl@NetBSD.org> | 2000-05-27 23:59:58 +0000 |
| commit | cb5289547f95d5f10ea62fbd7fee35426ecd77b4 (patch) | |
| tree | 24376c6067a6f6638b812a5d0b817d12d5f8ebb2 /sys/dev | |
| parent | 6a082e47975d3cc7c79246f30fd17ab80581026e (diff) | |
At least try to do something useful in the XS_BUSY case; don't cause
a panic by sleeping in an interrupt context.
Diffstat (limited to 'sys/dev')
| -rw-r--r-- | sys/dev/scsipi/scsipi_base.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/sys/dev/scsipi/scsipi_base.c b/sys/dev/scsipi/scsipi_base.c index 60f7bd1d5cb..fa456e1fb89 100644 --- a/sys/dev/scsipi/scsipi_base.c +++ b/sys/dev/scsipi/scsipi_base.c @@ -1,4 +1,4 @@ -/* $NetBSD: scsipi_base.c,v 1.35 2000/05/23 10:16:43 bouyer Exp $ */ +/* $NetBSD: scsipi_base.c,v 1.36 2000/05/27 23:59:58 fvdl Exp $ */ /*- * Copyright (c) 1998 The NetBSD Foundation, Inc. @@ -777,14 +777,14 @@ sc_err1(xs, async) if (xs->retries) { if ((xs->xs_control & XS_CTL_POLL) != 0) delay(1000000); - else if ((xs->xs_control & + else if (!async && (xs->xs_control & (XS_CTL_NOSLEEP|XS_CTL_DISCOVERY)) == 0) tsleep(&lbolt, PRIBIO, "scbusy", 0); else #if 0 timeout(scsipi_requeue, xs, hz); #else - goto lose; + goto retry; #endif } case XS_TIMEOUT: @@ -796,7 +796,6 @@ sc_err1(xs, async) return (ERESTART); } case XS_DRIVER_STUFFUP: - lose: error = EIO; break; |
