scsi: refine constants for READ CAPACITY 16
Rename SERVICE_ACTION_IN to SERVICE_ACTION_IN_16 to distinguish from the 12-byte CDB variant, and add a constant for the subcommand. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
8e321cc622
commit
f651526271
@ -977,7 +977,7 @@ static const char *scsi_command_name(uint8_t cmd)
|
|||||||
[ LOCATE_16 ] = "LOCATE_16",
|
[ LOCATE_16 ] = "LOCATE_16",
|
||||||
[ WRITE_SAME_16 ] = "WRITE_SAME_16",
|
[ WRITE_SAME_16 ] = "WRITE_SAME_16",
|
||||||
[ ERASE_16 ] = "ERASE_16",
|
[ ERASE_16 ] = "ERASE_16",
|
||||||
[ SERVICE_ACTION_IN ] = "SERVICE_ACTION_IN",
|
[ SERVICE_ACTION_IN_16 ] = "SERVICE_ACTION_IN_16",
|
||||||
[ WRITE_LONG_16 ] = "WRITE_LONG_16",
|
[ WRITE_LONG_16 ] = "WRITE_LONG_16",
|
||||||
[ REPORT_LUNS ] = "REPORT_LUNS",
|
[ REPORT_LUNS ] = "REPORT_LUNS",
|
||||||
[ BLANK ] = "BLANK",
|
[ BLANK ] = "BLANK",
|
||||||
@ -987,6 +987,7 @@ static const char *scsi_command_name(uint8_t cmd)
|
|||||||
[ LOAD_UNLOAD ] = "LOAD_UNLOAD",
|
[ LOAD_UNLOAD ] = "LOAD_UNLOAD",
|
||||||
[ READ_12 ] = "READ_12",
|
[ READ_12 ] = "READ_12",
|
||||||
[ WRITE_12 ] = "WRITE_12",
|
[ WRITE_12 ] = "WRITE_12",
|
||||||
|
[ SERVICE_ACTION_IN_12 ] = "SERVICE_ACTION_IN_12",
|
||||||
[ WRITE_VERIFY_12 ] = "WRITE_VERIFY_12",
|
[ WRITE_VERIFY_12 ] = "WRITE_VERIFY_12",
|
||||||
[ VERIFY_12 ] = "VERIFY_12",
|
[ VERIFY_12 ] = "VERIFY_12",
|
||||||
[ SEARCH_HIGH_12 ] = "SEARCH_HIGH_12",
|
[ SEARCH_HIGH_12 ] = "SEARCH_HIGH_12",
|
||||||
|
@ -102,7 +102,7 @@
|
|||||||
#define LOCATE_16 0x92
|
#define LOCATE_16 0x92
|
||||||
#define WRITE_SAME_16 0x93
|
#define WRITE_SAME_16 0x93
|
||||||
#define ERASE_16 0x93
|
#define ERASE_16 0x93
|
||||||
#define SERVICE_ACTION_IN 0x9e
|
#define SERVICE_ACTION_IN_16 0x9e
|
||||||
#define WRITE_LONG_16 0x9f
|
#define WRITE_LONG_16 0x9f
|
||||||
#define REPORT_LUNS 0xa0
|
#define REPORT_LUNS 0xa0
|
||||||
#define BLANK 0xa1
|
#define BLANK 0xa1
|
||||||
@ -112,6 +112,7 @@
|
|||||||
#define LOAD_UNLOAD 0xa6
|
#define LOAD_UNLOAD 0xa6
|
||||||
#define READ_12 0xa8
|
#define READ_12 0xa8
|
||||||
#define WRITE_12 0xaa
|
#define WRITE_12 0xaa
|
||||||
|
#define SERVICE_ACTION_IN_12 0xab
|
||||||
#define WRITE_VERIFY_12 0xae
|
#define WRITE_VERIFY_12 0xae
|
||||||
#define VERIFY_12 0xaf
|
#define VERIFY_12 0xaf
|
||||||
#define SEARCH_HIGH_12 0xb0
|
#define SEARCH_HIGH_12 0xb0
|
||||||
@ -122,6 +123,11 @@
|
|||||||
#define READ_DEFECT_DATA_12 0xb7
|
#define READ_DEFECT_DATA_12 0xb7
|
||||||
#define SET_CD_SPEED 0xbb
|
#define SET_CD_SPEED 0xbb
|
||||||
|
|
||||||
|
/*
|
||||||
|
* SERVICE ACTION IN subcodes
|
||||||
|
*/
|
||||||
|
#define SAI_READ_CAPACITY_16 0x10
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* SAM Status codes
|
* SAM Status codes
|
||||||
*/
|
*/
|
||||||
|
@ -890,9 +890,9 @@ static int scsi_disk_emulate_command(SCSIDiskReq *r, uint8_t *outbuf)
|
|||||||
outbuf[7] = 8; // CD-ROM
|
outbuf[7] = 8; // CD-ROM
|
||||||
buflen = 8;
|
buflen = 8;
|
||||||
break;
|
break;
|
||||||
case SERVICE_ACTION_IN:
|
case SERVICE_ACTION_IN_16:
|
||||||
/* Service Action In subcommands. */
|
/* Service Action In subcommands. */
|
||||||
if ((req->cmd.buf[1] & 31) == 0x10) {
|
if ((req->cmd.buf[1] & 31) == SAI_READ_CAPACITY_16) {
|
||||||
DPRINTF("SAI READ CAPACITY(16)\n");
|
DPRINTF("SAI READ CAPACITY(16)\n");
|
||||||
memset(outbuf, 0, req->cmd.xfer);
|
memset(outbuf, 0, req->cmd.xfer);
|
||||||
bdrv_get_geometry(s->bs, &nb_sectors);
|
bdrv_get_geometry(s->bs, &nb_sectors);
|
||||||
@ -992,7 +992,7 @@ static int32_t scsi_send_command(SCSIRequest *req, uint8_t *buf)
|
|||||||
case READ_CAPACITY_10:
|
case READ_CAPACITY_10:
|
||||||
case READ_TOC:
|
case READ_TOC:
|
||||||
case GET_CONFIGURATION:
|
case GET_CONFIGURATION:
|
||||||
case SERVICE_ACTION_IN:
|
case SERVICE_ACTION_IN_16:
|
||||||
case VERIFY_10:
|
case VERIFY_10:
|
||||||
rc = scsi_disk_emulate_command(r, outbuf);
|
rc = scsi_disk_emulate_command(r, outbuf);
|
||||||
if (rc < 0) {
|
if (rc < 0) {
|
||||||
|
Loading…
Reference in New Issue
Block a user