From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:49317) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SQE9y-0007uU-TU for qemu-devel@nongnu.org; Fri, 04 May 2012 04:46:44 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1SQE9u-0007O7-54 for qemu-devel@nongnu.org; Fri, 04 May 2012 04:46:42 -0400 Received: from mail-pb0-f45.google.com ([209.85.160.45]:40984) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SQE9t-0007G0-S1 for qemu-devel@nongnu.org; Fri, 04 May 2012 04:46:38 -0400 Received: by mail-pb0-f45.google.com with SMTP id ro12so4505829pbb.4 for ; Fri, 04 May 2012 01:46:37 -0700 (PDT) Sender: Paolo Bonzini From: Paolo Bonzini Date: Fri, 4 May 2012 10:45:49 +0200 Message-Id: <1336121154-26517-10-git-send-email-pbonzini@redhat.com> In-Reply-To: <1336121154-26517-1-git-send-email-pbonzini@redhat.com> References: <1336121154-26517-1-git-send-email-pbonzini@redhat.com> Subject: [Qemu-devel] [PATCH 09/14] scsi: parse 16-byte tape CDBs List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org The transfer length for these commands is different from the transfer length of the corresponding disk commands, so parse it specially. Signed-off-by: Paolo Bonzini --- READ REVERSE(16) seems to be for people who stream manga from tape. hw/scsi-bus.c | 10 ++++++++++ hw/scsi-defs.h | 1 + 2 files changed, 11 insertions(+) diff --git a/hw/scsi-bus.c b/hw/scsi-bus.c index 5fbf8db..46cd1f9 100644 --- a/hw/scsi-bus.c +++ b/hw/scsi-bus.c @@ -891,6 +891,16 @@ static int scsi_req_stream_length(SCSICommand *cmd, SCSIDevice *dev, uint8_t *bu cmd->xfer *= dev->blocksize; } break; + case READ_16: + case READ_REVERSE_16: + case VERIFY_16: + case WRITE_16: + cmd->len = 16; + cmd->xfer = buf[14] | (buf[13] << 8) | (buf[12] << 16); + if (buf[1] & 0x01) { /* fixed */ + cmd->xfer *= dev->blocksize; + } + break; case REWIND: case START_STOP: cmd->len = 6; diff --git a/hw/scsi-defs.h b/hw/scsi-defs.h index ca24192..219c84d 100644 --- a/hw/scsi-defs.h +++ b/hw/scsi-defs.h @@ -92,6 +92,7 @@ #define PERSISTENT_RESERVE_OUT 0x5f #define VARLENGTH_CDB 0x7f #define WRITE_FILEMARKS_16 0x80 +#define READ_REVERSE_16 0x81 #define ALLOW_OVERWRITE 0x82 #define EXTENDED_COPY 0x83 #define ATA_PASSTHROUGH 0x85 -- 1.7.9.3