Revision 39ec9a50
b/hw/scsi-bus.c | ||
---|---|---|
442 | 442 |
[ REPORT_DENSITY_SUPPORT ] = "REPORT_DENSITY_SUPPORT", |
443 | 443 |
[ GET_CONFIGURATION ] = "GET_CONFIGURATION", |
444 | 444 |
[ SERVICE_ACTION_IN ] = "SERVICE_ACTION_IN", |
445 |
[ REPORT_LUNS ] = "REPORT_LUNS", |
|
445 | 446 |
[ LOAD_UNLOAD ] = "LOAD_UNLOAD", |
446 | 447 |
[ SET_CD_SPEED ] = "SET_CD_SPEED", |
447 | 448 |
[ BLANK ] = "BLANK", |
b/hw/scsi-defs.h | ||
---|---|---|
101 | 101 |
#define REPORT_DENSITY_SUPPORT 0x44 |
102 | 102 |
#define GET_CONFIGURATION 0x46 |
103 | 103 |
#define SERVICE_ACTION_IN 0x9e |
104 |
#define REPORT_LUNS 0xa0 |
|
104 | 105 |
#define LOAD_UNLOAD 0xa6 |
105 | 106 |
#define SET_CD_SPEED 0xbb |
106 | 107 |
#define BLANK 0xa1 |
b/hw/scsi-disk.c | ||
---|---|---|
787 | 787 |
} |
788 | 788 |
DPRINTF("Unsupported Service Action In\n"); |
789 | 789 |
goto illegal_request; |
790 |
case REPORT_LUNS: |
|
791 |
if (req->cmd.xfer < 16) |
|
792 |
goto illegal_request; |
|
793 |
memset(outbuf, 0, 16); |
|
794 |
outbuf[3] = 8; |
|
795 |
buflen = 16; |
|
796 |
break; |
|
790 | 797 |
default: |
791 | 798 |
goto illegal_request; |
792 | 799 |
} |
... | ... | |
904 | 911 |
case READ_TOC: |
905 | 912 |
case GET_CONFIGURATION: |
906 | 913 |
case SERVICE_ACTION_IN: |
914 |
case REPORT_LUNS: |
|
907 | 915 |
rc = scsi_disk_emulate_command(&r->req, outbuf); |
908 | 916 |
if (rc > 0) { |
909 | 917 |
r->iov.iov_len = rc; |
... | ... | |
932 | 940 |
r->sector_count = len * s->cluster_size; |
933 | 941 |
is_write = 1; |
934 | 942 |
break; |
935 |
case 0xa0: |
|
936 |
DPRINTF("Report LUNs (len %d)\n", len); |
|
937 |
if (len < 16) |
|
938 |
goto fail; |
|
939 |
memset(outbuf, 0, 16); |
|
940 |
outbuf[3] = 8; |
|
941 |
r->iov.iov_len = 16; |
|
942 |
break; |
|
943 | 943 |
case VERIFY: |
944 | 944 |
DPRINTF("Verify (sector %" PRId64 ", count %d)\n", lba, len); |
945 | 945 |
break; |
Also available in: Unified diff