diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2013-11-12 20:00:15 +0100 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2013-11-12 20:00:15 +0100 |
commit | def87d60167d13c92328b6f0f81800787eedf03a (patch) | |
tree | 7ae89dc309c4fc5450e9f5091be7dd449e767622 /sys/src/9/port/devsd.c | |
parent | 983413de75dafe1794f131274bc18c5e30429e51 (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/9/port/devsd.c')
-rw-r--r-- | sys/src/9/port/devsd.c | 4 |
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; |