summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/src/9/port/sdscsi.c4
-rw-r--r--sys/src/cmd/nusb/disk/disk.c8
-rw-r--r--sys/src/cmd/nusb/disk/scsireq.c4
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;