qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Paolo Bonzini <pbonzini@redhat.com>
To: qemu-devel@nongnu.org
Cc: aliguori@us.ibm.com
Subject: [Qemu-devel] [PATCH 5/7] scsi: introduce scsi_cdb_length and scsi_data_cdb_length
Date: Fri, 21 Sep 2012 16:52:47 +0200	[thread overview]
Message-ID: <1348239169-25040-6-git-send-email-pbonzini@redhat.com> (raw)
In-Reply-To: <1348239169-25040-1-git-send-email-pbonzini@redhat.com>

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 hw/scsi-bus.c | 23 ++++++++++++++++++-----
 hw/scsi.h     |  2 ++
 2 file modificati, 20 inserzioni(+), 5 rimozioni(-)

diff --git a/hw/scsi-bus.c b/hw/scsi-bus.c
index 4981a02..058d3b2 100644
--- a/hw/scsi-bus.c
+++ b/hw/scsi-bus.c
@@ -801,26 +801,39 @@ static int ata_passthrough_16_xfer_size(SCSIDevice *dev, uint8_t *buf)
     return xfer * unit;
 }
 
-static int scsi_req_length(SCSICommand *cmd, SCSIDevice *dev, uint8_t *buf)
+uint32_t scsi_data_cdb_length(uint8_t *buf)
+{
+    if ((buf[0] >> 5) == 0 && buf[4] == 0) {
+        return 256;
+    } else {
+        return scsi_cdb_length(buf);
+    }
+}
+
+uint32_t scsi_cdb_length(uint8_t *buf)
 {
     switch (buf[0] >> 5) {
     case 0:
-        cmd->xfer = buf[4];
+        return buf[4];
         break;
     case 1:
     case 2:
-        cmd->xfer = lduw_be_p(&buf[7]);
+        return lduw_be_p(&buf[7]);
         break;
     case 4:
-        cmd->xfer = ldl_be_p(&buf[10]) & 0xffffffffULL;
+        return ldl_be_p(&buf[10]) & 0xffffffffULL;
         break;
     case 5:
-        cmd->xfer = ldl_be_p(&buf[6]) & 0xffffffffULL;
+        return ldl_be_p(&buf[6]) & 0xffffffffULL;
         break;
     default:
         return -1;
     }
+}
 
+static int scsi_req_length(SCSICommand *cmd, SCSIDevice *dev, uint8_t *buf)
+{
+    cmd->xfer = scsi_cdb_length(buf);
     switch (buf[0]) {
     case TEST_UNIT_READY:
     case REWIND:
diff --git a/hw/scsi.h b/hw/scsi.h
index 1aeee46..b8f7357 100644
--- a/hw/scsi.h
+++ b/hw/scsi.h
@@ -218,6 +218,8 @@ extern const struct SCSISense sense_code_WRITE_PROTECTED;
 
 #define SENSE_CODE(x) sense_code_ ## x
 
+uint32_t scsi_data_cdb_length(uint8_t *buf);
+uint32_t scsi_cdb_length(uint8_t *buf);
 int scsi_sense_valid(SCSISense sense);
 int scsi_build_sense(uint8_t *in_buf, int in_len,
                      uint8_t *buf, int len, bool fixed);
-- 
1.7.12

  parent reply	other threads:[~2012-09-21 14:53 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-09-21 14:52 [Qemu-devel] [PULL 0/7] SCSI patches for 2012-09-21 Paolo Bonzini
2012-09-21 14:52 ` [Qemu-devel] [PATCH 1/7] iSCSI: We need to support SG_IO also from iscsi_ioctl() Paolo Bonzini
2012-09-21 14:52 ` [Qemu-devel] [PATCH 2/7] iSCSI: We dont need to explicitely call qemu_notify_event() any more Paolo Bonzini
2012-09-21 14:52 ` [Qemu-devel] [PATCH 3/7] scsi-disk: introduce check_lba_range Paolo Bonzini
2012-09-21 14:52 ` [Qemu-devel] [PATCH 4/7] scsi-disk: fix check for out-of-range LBA Paolo Bonzini
2012-09-21 14:52 ` Paolo Bonzini [this message]
2012-09-21 14:52 ` [Qemu-devel] [PATCH 6/7] scsi-disk: use scsi_data_cdb_length Paolo Bonzini
2012-09-21 14:52 ` [Qemu-devel] [PATCH 7/7] SCSI: Standard INQUIRY data should report HiSup flag as set Paolo Bonzini
2012-09-25 23:27 ` [Qemu-devel] [PULL 0/7] SCSI patches for 2012-09-21 Anthony Liguori

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1348239169-25040-6-git-send-email-pbonzini@redhat.com \
    --to=pbonzini@redhat.com \
    --cc=aliguori@us.ibm.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).