summaryrefslogtreecommitdiffstats
path: root/sys/scsi/sd.c
diff options
context:
space:
mode:
authorgibbs <gibbs@FreeBSD.org>1995-04-23 22:07:56 +0000
committergibbs <gibbs@FreeBSD.org>1995-04-23 22:07:56 +0000
commit2606a8d910183093ce2b38a07c7e62fca277440f (patch)
treeb2523d83e386ecacb55827c732ebd228a642085f /sys/scsi/sd.c
parent08c21a38d32c40274e29f86a6d1b61acc9bd9093 (diff)
downloadFreeBSD-src-2606a8d910183093ce2b38a07c7e62fca277440f.zip
FreeBSD-src-2606a8d910183093ce2b38a07c7e62fca277440f.tar.gz
Set SCSI_NOSLEEP only when we really need to. This requires an additional
flags parameter to all xxstart routines so that the correct information can be passed down into the device specific routines. This is needed to ensure that ccb/scb allocation routines don't hang. Submitted by: John Dyson
Diffstat (limited to 'sys/scsi/sd.c')
-rw-r--r--sys/scsi/sd.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/sys/scsi/sd.c b/sys/scsi/sd.c
index 03dd4db..1f9a5c5 100644
--- a/sys/scsi/sd.c
+++ b/sys/scsi/sd.c
@@ -14,7 +14,7 @@
*
* Ported to run under 386BSD by Julian Elischer (julian@dialix.oz.au) Sept 1992
*
- * $Id: sd.c,v 1.57 1995/03/23 16:09:01 bde Exp $
+ * $Id: sd.c,v 1.59 1995/04/14 15:10:42 dufault Exp $
*/
#define SPLSD splbio
@@ -61,7 +61,7 @@ errval sd_get_parms __P((int unit, int flags));
static void sdstrategy1 __P((struct buf *));
int sd_sense_handler __P((struct scsi_xfer *));
-void sdstart __P((u_int32));
+void sdstart __P((u_int32, u_int32));
struct scsi_data {
u_int32 flags;
@@ -407,7 +407,7 @@ sd_strategy(struct buf *bp, struct scsi_link *sc_link)
* Tell the device to get going on the transfer if it's
* not doing anything, otherwise just wait for completion
*/
- sdstart(unit);
+ sdstart(unit, 0);
splx(opri);
return /*0*/;
@@ -450,7 +450,7 @@ sdstrategy1(struct buf *bp)
* sdstart() is called at SPLSD from sdstrategy and scsi_done
*/
void
-sdstart(u_int32 unit)
+sdstart(u_int32 unit, u_int32 flags)
{
register struct scsi_link *sc_link = SCSI_LINK(&sd_switch, unit);
register struct scsi_data *sd = sc_link->sd;
@@ -525,7 +525,7 @@ sdstart(u_int32 unit)
SD_RETRIES,
10000,
bp,
- SCSI_NOSLEEP | ((bp->b_flags & B_READ) ?
+ flags | ((bp->b_flags & B_READ) ?
SCSI_DATA_IN : SCSI_DATA_OUT))
== SUCCESSFULLY_QUEUED) {
sdqueues++;
OpenPOWER on IntegriCloud