]> git.lizzy.rs Git - plan9front.git/commitdiff
devsd: fix scsi emulation for disks bigger than 4 billion sectors (from erik quanstro...
authorcinap_lenrek <cinap_lenrek@felloff.net>
Tue, 12 Nov 2013 19:00:15 +0000 (20:00 +0100)
committercinap_lenrek <cinap_lenrek@felloff.net>
Tue, 12 Nov 2013 19:00:15 +0000 (20:00 +0100)
for read capacity (10 (0x25) if we have more than
4 billion sectors, we must not return nsectors % (1<<32),
we must return 0xffffffff.

sys/src/9/port/devsd.c

index 4a11d718ccfb86e61bd4040d0aeb03e2c26c9306..6474a68f096aa488c029f26142ad292d6a77a89c 100644 (file)
@@ -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;