mirror of https://gitee.com/openkylin/qemu.git
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",
|
||||
[ WRITE_SAME_16 ] = "WRITE_SAME_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",
|
||||
[ REPORT_LUNS ] = "REPORT_LUNS",
|
||||
[ BLANK ] = "BLANK",
|
||||
|
@ -987,6 +987,7 @@ static const char *scsi_command_name(uint8_t cmd)
|
|||
[ LOAD_UNLOAD ] = "LOAD_UNLOAD",
|
||||
[ READ_12 ] = "READ_12",
|
||||
[ WRITE_12 ] = "WRITE_12",
|
||||
[ SERVICE_ACTION_IN_12 ] = "SERVICE_ACTION_IN_12",
|
||||
[ WRITE_VERIFY_12 ] = "WRITE_VERIFY_12",
|
||||
[ VERIFY_12 ] = "VERIFY_12",
|
||||
[ SEARCH_HIGH_12 ] = "SEARCH_HIGH_12",
|
||||
|
|
|
@ -102,7 +102,7 @@
|
|||
#define LOCATE_16 0x92
|
||||
#define WRITE_SAME_16 0x93
|
||||
#define ERASE_16 0x93
|
||||
#define SERVICE_ACTION_IN 0x9e
|
||||
#define SERVICE_ACTION_IN_16 0x9e
|
||||
#define WRITE_LONG_16 0x9f
|
||||
#define REPORT_LUNS 0xa0
|
||||
#define BLANK 0xa1
|
||||
|
@ -112,6 +112,7 @@
|
|||
#define LOAD_UNLOAD 0xa6
|
||||
#define READ_12 0xa8
|
||||
#define WRITE_12 0xaa
|
||||
#define SERVICE_ACTION_IN_12 0xab
|
||||
#define WRITE_VERIFY_12 0xae
|
||||
#define VERIFY_12 0xaf
|
||||
#define SEARCH_HIGH_12 0xb0
|
||||
|
@ -122,6 +123,11 @@
|
|||
#define READ_DEFECT_DATA_12 0xb7
|
||||
#define SET_CD_SPEED 0xbb
|
||||
|
||||
/*
|
||||
* SERVICE ACTION IN subcodes
|
||||
*/
|
||||
#define SAI_READ_CAPACITY_16 0x10
|
||||
|
||||
/*
|
||||
* SAM Status codes
|
||||
*/
|
||||
|
|
|
@ -890,9 +890,9 @@ static int scsi_disk_emulate_command(SCSIDiskReq *r, uint8_t *outbuf)
|
|||
outbuf[7] = 8; // CD-ROM
|
||||
buflen = 8;
|
||||
break;
|
||||
case SERVICE_ACTION_IN:
|
||||
case SERVICE_ACTION_IN_16:
|
||||
/* 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");
|
||||
memset(outbuf, 0, req->cmd.xfer);
|
||||
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_TOC:
|
||||
case GET_CONFIGURATION:
|
||||
case SERVICE_ACTION_IN:
|
||||
case SERVICE_ACTION_IN_16:
|
||||
case VERIFY_10:
|
||||
rc = scsi_disk_emulate_command(r, outbuf);
|
||||
if (rc < 0) {
|
||||
|
|
Loading…
Reference in New Issue