From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:52774) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1R0swc-0004Ch-VZ for qemu-devel@nongnu.org; Tue, 06 Sep 2011 06:31:55 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1R0swb-0007R1-Jh for qemu-devel@nongnu.org; Tue, 06 Sep 2011 06:31:54 -0400 Received: from mail-vx0-f173.google.com ([209.85.220.173]:61012) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1R0swb-0007Qv-DJ for qemu-devel@nongnu.org; Tue, 06 Sep 2011 06:31:53 -0400 Received: by vxi32 with SMTP id 32so4799376vxi.4 for ; Tue, 06 Sep 2011 03:31:52 -0700 (PDT) Sender: Paolo Bonzini From: Paolo Bonzini Date: Tue, 6 Sep 2011 12:31:42 +0200 Message-Id: <1315305104-7219-1-git-send-email-pbonzini@redhat.com> Subject: [Qemu-devel] [PATCH] scsi: refine constants for READ CAPACITY 16 List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org 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 --- hw/scsi-bus.c | 3 ++- hw/scsi-defs.h | 8 +++++++- hw/scsi-disk.c | 6 +++--- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/hw/scsi-bus.c b/hw/scsi-bus.c index 7c8afff..80b8802 100644 --- a/hw/scsi-bus.c +++ b/hw/scsi-bus.c @@ -981,7 +981,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", @@ -991,6 +991,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", diff --git a/hw/scsi-defs.h b/hw/scsi-defs.h index ea288fa..bfe9392 100644 --- a/hw/scsi-defs.h +++ b/hw/scsi-defs.h @@ -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 @@ -123,6 +124,11 @@ #define SET_CD_SPEED 0xbb /* + * SERVICE ACTION IN subcodes + */ +#define SAI_READ_CAPACITY_16 0x10 + +/* * SAM Status codes */ diff --git a/hw/scsi-disk.c b/hw/scsi-disk.c index a1c5812..487f6cb 100644 --- a/hw/scsi-disk.c +++ b/hw/scsi-disk.c @@ -945,9 +945,9 @@ static int scsi_disk_emulate_command(SCSIDiskReq *r) 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); @@ -1045,7 +1045,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); if (rc < 0) { -- 1.7.6