summaryrefslogtreecommitdiff
path: root/sys/src
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2013-11-12 20:00:15 +0100
committercinap_lenrek <cinap_lenrek@felloff.net>2013-11-12 20:00:15 +0100
commitdef87d60167d13c92328b6f0f81800787eedf03a (patch)
tree7ae89dc309c4fc5450e9f5091be7dd449e767622 /sys/src
parent983413de75dafe1794f131274bc18c5e30429e51 (diff)
devsd: fix scsi emulation for disks bigger than 4 billion sectors (from erik quanstros 9atom)
for read capacity (10 (0x25) if we have more than 4 billion sectors, we must not return nsectors % (1<<32), we must return 0xffffffff.
Diffstat (limited to 'sys/src')
-rw-r--r--sys/src/9/port/devsd.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/sys/src/9/port/devsd.c b/sys/src/9/port/devsd.c
index 4a11d718c..6474a68f0 100644
--- a/sys/src/9/port/devsd.c
+++ b/sys/src/9/port/devsd.c
@@ -1072,7 +1072,9 @@ sdfakescsi(SDreq *r)
* Read capacity returns the LBA of the last sector.
*/
len = unit->sectors;
- if(len > 0)
+ if(len >= 0xffffffff)
+ len = 0xffffffff;
+ else if(len > 0)
len--;
p = r->data;
*p++ = len>>24;