From a9bba86dd79c411289b8369df311579a421a89f7 Mon Sep 17 00:00:00 2001 From: David du Colombier <0intro@gmail.com> Date: Tue, 22 Oct 1996 00:00:00 +0000 Subject: [PATCH] Plan 9 from Bell Labs 1996-10-22 --- pc/scsi.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/pc/scsi.c b/pc/scsi.c index cb74fa0f80b4cd8f8dca84e4a348040025e9384f..8568a9aee3e73aba516527b2a53441f94eae0ed4 100644 --- a/pc/scsi.c +++ b/pc/scsi.c @@ -103,6 +103,9 @@ scsireset(void) free(ctlr); } +static uchar lastcmd[16]; +static int lastcmdsz; + int scsiexec(Target *t, int rw, uchar *cmd, int cbytes, void *data, int *dbytes) { @@ -115,6 +118,11 @@ scsiexec(Target *t, int rw, uchar *cmd, int cbytes, void *data, int *dbytes) */ switch(s = (*scsi[t->ctlrno]->io)(t, rw, cmd, cbytes, data, dbytes)){ + case STcheck: + memmove(lastcmd, cmd, cbytes); + lastcmdsz = cbytes; + /*FALLTHROUGH*/ + default: /* * It's more complicated than this. There are conditions which @@ -323,6 +331,7 @@ scsibio(Target *t, char lun, int dir, void *b, long n, long bsize, long bno) cmd[3] = bno>>16; cmd[4] = bno>>8; cmd[5] = bno; + cmd[6] = 0; cmd[7] = n>>8; cmd[8] = n; cmd[9] = 0; @@ -423,6 +432,12 @@ buggery: s = key[sense[2]&0x0F]; print("scsi#%d: unit %d reqsense: '%s' code #%2.2ux #%2.2ux\n", t->ctlrno, t->target, s, sense[12], sense[13]); + print("scsi#%d: byte 2: #%2.2uX, bytes 15-17: #%2.2uX #%2.2uX #%2.2uX\n", + t->ctlrno, sense[2], sense[15], sense[16], sense[17]); + print("lastcmd (%d): ", lastcmdsz); + for(n = 0; n < lastcmdsz; n++) + print(" #%2.2uX", lastcmd[n]); + print("\n"); } free(sense); return STcheck;