From: "Michael S. Tsirkin" <mst@redhat.com>
To: qemu-devel@nongnu.org
Cc: Alexey Kardashevskiy <aik@ozlabs.ru>,
Paolo Bonzini <pbonzini@redhat.com>, Fam Zheng <famz@redhat.com>,
Nikunj A Dadhania <nikunj@linux.vnet.ibm.com>
Subject: [Qemu-devel] [PATCH 3/4] virtio-scsi: fix cdb/sense size
Date: Wed, 11 Mar 2015 14:43:08 +0100 [thread overview]
Message-ID: <20150311144308-mutt-send-email-mst@redhat.com> (raw)
In-Reply-To: <1426081233-7801-1-git-send-email-mst@redhat.com>
Commit "virtio-scsi: use standard-headers" added
cdb and sense into req/rep structures, which
breaks uses of sizeof for these structures,
since qemu adds its own arrays on top.
To fix, redefine CDB/sense field size to 0.
Reported-by: Fam Zheng <famz@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
include/hw/virtio/virtio-scsi.h | 3 +++
hw/scsi/virtio-scsi.c | 10 +++++-----
2 files changed, 8 insertions(+), 5 deletions(-)
diff --git a/include/hw/virtio/virtio-scsi.h b/include/hw/virtio/virtio-scsi.h
index e4b531e..9423865 100644
--- a/include/hw/virtio/virtio-scsi.h
+++ b/include/hw/virtio/virtio-scsi.h
@@ -14,6 +14,9 @@
#ifndef _QEMU_VIRTIO_SCSI_H
#define _QEMU_VIRTIO_SCSI_H
+/* Override CDB/sense data size: they are dynamic (guest controlled) in QEMU */
+#define VIRTIO_SCSI_CDB_SIZE 0
+#define VIRTIO_SCSI_SENSE_SIZE 0
#include "standard-headers/linux/virtio_scsi.h"
#include "hw/virtio/virtio.h"
#include "hw/pci/pci.h"
diff --git a/hw/scsi/virtio-scsi.c b/hw/scsi/virtio-scsi.c
index cfb52e8..ba51e06 100644
--- a/hw/scsi/virtio-scsi.c
+++ b/hw/scsi/virtio-scsi.c
@@ -476,7 +476,7 @@ static int virtio_scsi_parse_cdb(SCSIDevice *dev, SCSICommand *cmd,
VirtIOSCSIReq *req = hba_private;
if (cmd->len == 0) {
- cmd->len = MIN(VIRTIO_SCSI_CDB_SIZE, SCSI_CMD_BUF_SIZE);
+ cmd->len = MIN(VIRTIO_SCSI_CDB_DEFAULT_SIZE, SCSI_CMD_BUF_SIZE);
memcpy(cmd->buf, buf, cmd->len);
}
@@ -642,8 +642,8 @@ static void virtio_scsi_reset(VirtIODevice *vdev)
qbus_reset_all(&s->bus.qbus);
s->resetting--;
- vs->sense_size = VIRTIO_SCSI_SENSE_SIZE;
- vs->cdb_size = VIRTIO_SCSI_CDB_SIZE;
+ vs->sense_size = VIRTIO_SCSI_SENSE_DEFAULT_SIZE;
+ vs->cdb_size = VIRTIO_SCSI_CDB_DEFAULT_SIZE;
s->events_dropped = false;
}
@@ -830,8 +830,8 @@ void virtio_scsi_common_realize(DeviceState *dev, Error **errp,
return;
}
s->cmd_vqs = g_new0(VirtQueue *, s->conf.num_queues);
- s->sense_size = VIRTIO_SCSI_SENSE_SIZE;
- s->cdb_size = VIRTIO_SCSI_CDB_SIZE;
+ s->sense_size = VIRTIO_SCSI_SENSE_DEFAULT_SIZE;
+ s->cdb_size = VIRTIO_SCSI_CDB_DEFAULT_SIZE;
s->ctrl_vq = virtio_add_queue(vdev, VIRTIO_SCSI_VQ_SIZE,
ctrl);
--
MST
next prev parent reply other threads:[~2015-03-11 13:43 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <1426081233-7801-1-git-send-email-mst@redhat.com>
2015-03-11 13:43 ` [Qemu-devel] [PATCH 1/4] virtio-scsi: drop duplicate CDB/SENSE SIZE Michael S. Tsirkin
2015-03-11 13:43 ` [Qemu-devel] [PATCH 2/4] uapi/virtio_scsi: allow overriding CDB/SENSE size Michael S. Tsirkin
2015-03-11 13:43 ` Michael S. Tsirkin [this message]
2015-03-11 13:43 ` [Qemu-devel] [PATCH 4/4] virtio-scsi: clean out duplicate cdb field Michael S. Tsirkin
2015-03-11 14:03 ` Paolo Bonzini
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=20150311144308-mutt-send-email-mst@redhat.com \
--to=mst@redhat.com \
--cc=aik@ozlabs.ru \
--cc=famz@redhat.com \
--cc=nikunj@linux.vnet.ibm.com \
--cc=pbonzini@redhat.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.