diff options
| author | mycroft <mycroft@NetBSD.org> | 1999-04-05 19:19:34 +0000 |
|---|---|---|
| committer | mycroft <mycroft@NetBSD.org> | 1999-04-05 19:19:34 +0000 |
| commit | 7a304dfe1bf0e8a47289d11e4e5e3abcd841d848 (patch) | |
| tree | b45b488fd3695e3265fdccd20f1b7198eaa83ef4 /sys/dev | |
| parent | 71ebbb80005635f37e75e2f2ea3bce7f614783b6 (diff) | |
If scsipi_command() fails, always print out the error code.
Diffstat (limited to 'sys/dev')
| -rw-r--r-- | sys/dev/scsipi/cd.c | 15 | ||||
| -rw-r--r-- | sys/dev/scsipi/ss_mustek.c | 17 | ||||
| -rw-r--r-- | sys/dev/scsipi/ss_scanjet.c | 39 | ||||
| -rw-r--r-- | sys/dev/scsipi/st.c | 13 |
4 files changed, 51 insertions, 33 deletions
diff --git a/sys/dev/scsipi/cd.c b/sys/dev/scsipi/cd.c index cd528ad20bc..0cfbf773cda 100644 --- a/sys/dev/scsipi/cd.c +++ b/sys/dev/scsipi/cd.c @@ -1,4 +1,4 @@ -/* $NetBSD: cd.c,v 1.124 1999/02/28 17:14:57 explorer Exp $ */ +/* $NetBSD: cd.c,v 1.125 1999/04/05 19:19:34 mycroft Exp $ */ /*- * Copyright (c) 1998 The NetBSD Foundation, Inc. @@ -508,7 +508,7 @@ cdstart(v) struct scsi_rw cmd_small; #endif struct scsipi_generic *cmdp; - int blkno, nblks, cmdlen; + int blkno, nblks, cmdlen, error; struct partition *p; SC_DEBUG(sc_link, SDEV_DB2, ("cdstart ")); @@ -600,11 +600,14 @@ cdstart(v) * Call the routine that chats with the adapter. * Note: we cannot sleep as we may be an interrupt */ - if (scsipi_command(sc_link, cmdp, cmdlen, (u_char *)bp->b_data, - bp->b_bcount, CDRETRIES, 30000, bp, SCSI_NOSLEEP | - ((bp->b_flags & B_READ) ? SCSI_DATA_IN : SCSI_DATA_OUT))) { + error = scsipi_command(sc_link, cmdp, cmdlen, + (u_char *)bp->b_data, bp->b_bcount, + CDRETRIES, 30000, bp, SCSI_NOSLEEP | + ((bp->b_flags & B_READ) ? SCSI_DATA_IN : SCSI_DATA_OUT)); + if (error) { disk_unbusy(&cd->sc_dk, 0); - printf("%s: not queued", cd->sc_dev.dv_xname); + printf("%s: not queued, error %d\n", + cd->sc_dev.dv_xname, error); } } } diff --git a/sys/dev/scsipi/ss_mustek.c b/sys/dev/scsipi/ss_mustek.c index 1502bd46584..8265b380807 100644 --- a/sys/dev/scsipi/ss_mustek.c +++ b/sys/dev/scsipi/ss_mustek.c @@ -1,4 +1,4 @@ -/* $NetBSD: ss_mustek.c,v 1.9 1997/10/18 19:51:10 thorpej Exp $ */ +/* $NetBSD: ss_mustek.c,v 1.10 1999/04/05 19:19:34 mycroft Exp $ */ /* * Copyright (c) 1995 Joachim Koenig-Baltes. All rights reserved. @@ -471,6 +471,7 @@ mustek_read(ss, bp) struct mustek_read_cmd cmd; struct scsipi_link *sc_link = ss->sc_link; u_long lines_to_read; + int error; SC_DEBUG(sc_link, SDEV_DB1, ("mustek_read: start\n")); @@ -487,14 +488,20 @@ mustek_read(ss, bp) /* * go ask the adapter to do all this for us */ - if (scsipi_command(sc_link, + error = scsipi_command(sc_link, (struct scsipi_generic *) &cmd, sizeof(cmd), (u_char *) bp->b_data, bp->b_bcount, MUSTEK_RETRIES, 10000, bp, - SCSI_NOSLEEP | SCSI_DATA_IN) != SUCCESSFULLY_QUEUED) - printf("%s: not queued\n", ss->sc_dev.dv_xname); - else { + SCSI_NOSLEEP | SCSI_DATA_IN); + if (error) { + printf("%s: not queued, error %d\n", ss->sc_dev.dv_xname, + error); + } else { ss->sio.scan_lines -= lines_to_read; + if (ss->sio.scan_lines < 0) + ss->sio.scan_lines = 0; ss->sio.scan_window_size -= bp->b_bcount; + if (ss->sio.scan_window_size < 0) + ss->sio.scan_window_size = 0; } return (0); diff --git a/sys/dev/scsipi/ss_scanjet.c b/sys/dev/scsipi/ss_scanjet.c index 2a1b404dd10..df1ad1bc915 100644 --- a/sys/dev/scsipi/ss_scanjet.c +++ b/sys/dev/scsipi/ss_scanjet.c @@ -1,4 +1,4 @@ -/* $NetBSD: ss_scanjet.c,v 1.16 1998/04/22 19:44:19 pk Exp $ */ +/* $NetBSD: ss_scanjet.c,v 1.17 1999/04/05 19:19:34 mycroft Exp $ */ /* * Copyright (c) 1995 Kenneth Stailey. All rights reserved. @@ -61,8 +61,8 @@ int scanjet_trigger_scanner __P((struct ss_softc *)); int scanjet_read __P((struct ss_softc *, struct buf *)); /* only used internally */ -int scanjet_ctl_write __P((struct ss_softc *, char *, u_int, int)); -int scanjet_ctl_read __P((struct ss_softc *, char *, u_int, int)); +int scanjet_ctl_write __P((struct ss_softc *, char *, u_int)); +int scanjet_ctl_read __P((struct ss_softc *, char *, u_int)); int scanjet_set_window __P((struct ss_softc *)); int scanjet_compute_sizes __P((struct ss_softc *)); /* Maybe move to libkern? */ @@ -252,7 +252,7 @@ scanjet_trigger_scanner(ss) /* send "trigger" operation */ strcpy(escape_codes, "\033*f0S"); - error = scanjet_ctl_write(ss, escape_codes, strlen(escape_codes), 0); + error = scanjet_ctl_write(ss, escape_codes, strlen(escape_codes)); if (error) { uprintf("%s: trigger_scanner failed\n", ss->sc_dev.dv_xname); return (error); @@ -268,6 +268,7 @@ scanjet_read(ss, bp) { struct scsi_rw_scanner cmd; struct scsipi_link *sc_link = ss->sc_link; + int error; /* * Fill out the scsi command @@ -284,12 +285,14 @@ scanjet_read(ss, bp) /* * go ask the adapter to do all this for us */ - if (scsipi_command(sc_link, + error = scsipi_command(sc_link, (struct scsipi_generic *) &cmd, sizeof(cmd), (u_char *) bp->b_data, bp->b_bcount, SCANJET_RETRIES, 100000, bp, - SCSI_NOSLEEP | SCSI_DATA_IN) != SUCCESSFULLY_QUEUED) - printf("%s: not queued\n", ss->sc_dev.dv_xname); - else { + SCSI_NOSLEEP | SCSI_DATA_IN); + if (error) { + printf("%s: not queued, error %d\n", ss->sc_dev.dv_xname, + error); + } else { ss->sio.scan_window_size -= bp->b_bcount; if (ss->sio.scan_window_size < 0) ss->sio.scan_window_size = 0; @@ -303,14 +306,15 @@ scanjet_read(ss, bp) * Do a synchronous write. Used to send control messages. */ int -scanjet_ctl_write(ss, buf, size, flags) +scanjet_ctl_write(ss, buf, size) struct ss_softc *ss; char *buf; u_int size; - int flags; { struct scsi_rw_scanner cmd; + int flags; + flags = 0; if ((ss->flags & SSF_AUTOCONF) != 0) flags |= SCSI_AUTOCONF; @@ -328,14 +332,15 @@ scanjet_ctl_write(ss, buf, size, flags) * Do a synchronous read. Used to read responses to control messages. */ int -scanjet_ctl_read(ss, buf, size, flags) +scanjet_ctl_read(ss, buf, size) struct ss_softc *ss; char *buf; u_int size; - int flags; { struct scsi_rw_scanner cmd; + int flags; + flags = 0; if ((ss->flags & SSF_AUTOCONF) != 0) flags |= SCSI_AUTOCONF; @@ -428,7 +433,7 @@ scanjet_set_window(ss) p += sprintf(p, "\033*a%dL", (int)(ss->sio.scan_brightness) - 128); p += sprintf(p, "\033*a%dK", (int)(ss->sio.scan_contrast) - 128); - return (scanjet_ctl_write(ss, escape_codes, p - escape_codes, 0)); + return (scanjet_ctl_write(ss, escape_codes, p - escape_codes)); } /* atoi() is from /sys/arch/amiga/dev/ite.c @@ -476,12 +481,12 @@ scanjet_compute_sizes(ss) strcpy(escape_codes, "\033*s1024E"); /* pixels wide */ break; } - error = scanjet_ctl_write(ss, escape_codes, strlen(escape_codes), 0); + error = scanjet_ctl_write(ss, escape_codes, strlen(escape_codes)); if (error) { uprintf(wfail, ss->sc_dev.dv_xname); return (error); } - error = scanjet_ctl_read(ss, response, 20, 0); + error = scanjet_ctl_read(ss, response, 20); if (error) { uprintf(rfail, ss->sc_dev.dv_xname); return (error); @@ -496,12 +501,12 @@ scanjet_compute_sizes(ss) ss->sio.scan_pixels_per_line *= 8; strcpy(escape_codes, "\033*s1026E"); /* pixels high */ - error = scanjet_ctl_write(ss, escape_codes, strlen(escape_codes), 0); + error = scanjet_ctl_write(ss, escape_codes, strlen(escape_codes)); if (error) { uprintf(wfail, ss->sc_dev.dv_xname); return (error); } - error = scanjet_ctl_read(ss, response, 20, 0); + error = scanjet_ctl_read(ss, response, 20); if (error) { uprintf(rfail, ss->sc_dev.dv_xname); return (error); diff --git a/sys/dev/scsipi/st.c b/sys/dev/scsipi/st.c index 33b44df29a4..250bde62b67 100644 --- a/sys/dev/scsipi/st.c +++ b/sys/dev/scsipi/st.c @@ -1,4 +1,4 @@ -/* $NetBSD: st.c,v 1.110 1999/02/28 17:14:57 explorer Exp $ */ +/* $NetBSD: st.c,v 1.111 1999/04/05 19:19:34 mycroft Exp $ */ /*- * Copyright (c) 1998 The NetBSD Foundation, Inc. @@ -1069,7 +1069,7 @@ ststart(v) struct scsipi_link *sc_link = st->sc_link; register struct buf *bp, *dp; struct scsi_rw_tape cmd; - int flags; + int flags, error; SC_DEBUG(sc_link, SDEV_DB2, ("ststart ")); /* @@ -1180,11 +1180,14 @@ ststart(v) /* * go ask the adapter to do all this for us */ - if (scsipi_command(sc_link, + error = scsipi_command(sc_link, (struct scsipi_generic *)&cmd, sizeof(cmd), (u_char *)bp->b_data, bp->b_bcount, - 0, ST_IO_TIME, bp, flags | SCSI_NOSLEEP)) - printf("%s: not queued\n", st->sc_dev.dv_xname); + 0, ST_IO_TIME, bp, flags | SCSI_NOSLEEP); + if (error) { + printf("%s: not queued, error %d\n", + st->sc_dev.dv_xname, error); + } } /* go back and see if we can cram more work in.. */ } |
