diff options
| -rw-r--r-- | sys/src/9/port/sdscsi.c | 4 | ||||
| -rw-r--r-- | sys/src/cmd/nusb/disk/disk.c | 8 | ||||
| -rw-r--r-- | sys/src/cmd/nusb/disk/scsireq.c | 4 |
3 files changed, 11 insertions, 5 deletions
diff --git a/sys/src/9/port/sdscsi.c b/sys/src/9/port/sdscsi.c index dd4188ec7..defad953e 100644 --- a/sys/src/9/port/sdscsi.c +++ b/sys/src/9/port/sdscsi.c @@ -45,10 +45,10 @@ scsiverify(SDunit* unit) r->write = 0; r->cmd[0] = 0x12; r->cmd[1] = r->lun<<5; - r->cmd[4] = sizeof(unit->inquiry)-1; + r->cmd[4] = 36; r->clen = 6; r->data = inquiry; - r->dlen = sizeof(unit->inquiry)-1; + r->dlen = 36; r->flags = 0; r->status = ~0; diff --git a/sys/src/cmd/nusb/disk/disk.c b/sys/src/cmd/nusb/disk/disk.c index 41260aacd..60052922b 100644 --- a/sys/src/cmd/nusb/disk/disk.c +++ b/sys/src/cmd/nusb/disk/disk.c @@ -341,7 +341,13 @@ umsinit(void) i, lun->inquiry[0]); continue; } - SRstart(lun, 1); + + if(SRready(lun) < 0 && SRready(lun) < 0 && SRready(lun) < 0) + dprint(2, "disk: lun %d not ready\n", i); + + if((lun->inquiry[0] & 0x1F) == 0) + SRstart(lun, 1); + /* * we ignore the device type reported by inquiry. * Some devices return a wrong value but would still work. diff --git a/sys/src/cmd/nusb/disk/scsireq.c b/sys/src/cmd/nusb/disk/scsireq.c index f9994e286..683dc7b8c 100644 --- a/sys/src/cmd/nusb/disk/scsireq.c +++ b/sys/src/cmd/nusb/disk/scsireq.c @@ -404,12 +404,12 @@ SRinquiry(ScsiReq *rp) memset(cmd, 0, sizeof cmd); cmd[0] = ScmdInq; - cmd[4] = sizeof rp->inquiry; + cmd[4] = 36; rp->cmd.p = cmd; rp->cmd.count = sizeof cmd; memset(rp->inquiry, 0, sizeof rp->inquiry); rp->data.p = rp->inquiry; - rp->data.count = sizeof rp->inquiry; + rp->data.count = 36; rp->data.write = 0; if(SRrequest(rp) >= 0){ rp->flags |= Finqok; |
