|
|
9bac43 |
From c9c4f117d8b507c2f86035c282d537c0a327364f Mon Sep 17 00:00:00 2001
|
|
|
9bac43 |
From: Fam Zheng <famz@redhat.com>
|
|
|
9bac43 |
Date: Wed, 14 Jun 2017 15:37:01 +0200
|
|
|
9bac43 |
Subject: virtio-scsi: Reject scsi-cd if data plane enabled [RHEL only]
|
|
|
9bac43 |
|
|
|
9bac43 |
RH-Author: Fam Zheng <famz@redhat.com>
|
|
|
9bac43 |
Message-id: <20170614153701.14757-1-famz@redhat.com>
|
|
|
9bac43 |
Patchwork-id: 75613
|
|
|
9bac43 |
O-Subject: [RHV-7.4 qemu-kvm-rhev PATCH v3] virtio-scsi: Reject scsi-cd if data plane enabled [RHEL only]
|
|
|
9bac43 |
Bugzilla: 1378816
|
|
|
9bac43 |
RH-Acked-by: Paolo Bonzini <pbonzini@redhat.com>
|
|
|
9bac43 |
RH-Acked-by: Stefan Hajnoczi <stefanha@redhat.com>
|
|
|
9bac43 |
RH-Acked-by: Max Reitz <mreitz@redhat.com>
|
|
|
9bac43 |
|
|
|
9bac43 |
We need a fix for RHEL 7.4 and 7.3.z, but unfortunately upstream isn't
|
|
|
9bac43 |
ready. If it were, the changes will be too invasive. To have an idea:
|
|
|
9bac43 |
|
|
|
9bac43 |
https://lists.gnu.org/archive/html/qemu-devel/2017-05/msg05400.html
|
|
|
9bac43 |
|
|
|
9bac43 |
is an incomplete attempt to fix part of the issue, and the remaining
|
|
|
9bac43 |
work unfortunately involve even more complex changes.
|
|
|
9bac43 |
|
|
|
9bac43 |
As a band-aid, this partially reverts the effect of ef8875b
|
|
|
9bac43 |
(virtio-scsi: Remove op blocker for dataplane, since v2.7). We cannot
|
|
|
9bac43 |
simply revert that commit as a whole because we already shipped it in
|
|
|
9bac43 |
qemu-kvm-rhev 7.3, since when, block jobs has been possible. We should
|
|
|
9bac43 |
only block what has been broken. Also, faithfully reverting the above
|
|
|
9bac43 |
commit means adding back the removed op blocker, but that is not enough,
|
|
|
9bac43 |
because it still crashes when inserting media into an initially empty
|
|
|
9bac43 |
scsi-cd.
|
|
|
9bac43 |
|
|
|
9bac43 |
All in all, scsi-cd on virtio-scsi-dataplane has basically been unusable
|
|
|
9bac43 |
unless the scsi-cd never enters an empty state, so, disable it
|
|
|
9bac43 |
altogether. Otherwise it would be much more difficult to avoid
|
|
|
9bac43 |
crashing.
|
|
|
9bac43 |
|
|
|
9bac43 |
Signed-off-by: Fam Zheng <famz@redhat.com>
|
|
|
9bac43 |
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
|
|
9bac43 |
(cherry picked from commit b0caf00bbc35c7d89e02999bdce86e1f867728e8)
|
|
|
9bac43 |
---
|
|
|
9bac43 |
hw/scsi/virtio-scsi.c | 9 +++++++++
|
|
|
9bac43 |
1 file changed, 9 insertions(+)
|
|
|
9bac43 |
|
|
|
9bac43 |
diff --git a/hw/scsi/virtio-scsi.c b/hw/scsi/virtio-scsi.c
|
|
|
9bac43 |
index eb63944..2635c38 100644
|
|
|
9bac43 |
--- a/hw/scsi/virtio-scsi.c
|
|
|
9bac43 |
+++ b/hw/scsi/virtio-scsi.c
|
|
|
9bac43 |
@@ -790,6 +790,15 @@ static void virtio_scsi_hotplug(HotplugHandler *hotplug_dev, DeviceState *dev,
|
|
|
9bac43 |
VirtIOSCSI *s = VIRTIO_SCSI(vdev);
|
|
|
9bac43 |
SCSIDevice *sd = SCSI_DEVICE(dev);
|
|
|
9bac43 |
|
|
|
9bac43 |
+ /* XXX: Remove this check once block backend is capable of handling
|
|
|
9bac43 |
+ * AioContext change upon eject/insert.
|
|
|
9bac43 |
+ * s->ctx is NULL if ioeventfd is off, s->ctx is qemu_get_aio_context() if
|
|
|
9bac43 |
+ * data plane is not used, both cases are safe for scsi-cd. */
|
|
|
9bac43 |
+ if (s->ctx && s->ctx != qemu_get_aio_context() &&
|
|
|
9bac43 |
+ object_dynamic_cast(OBJECT(dev), "scsi-cd")) {
|
|
|
9bac43 |
+ error_setg(errp, "scsi-cd is not supported by data plane");
|
|
|
9bac43 |
+ return;
|
|
|
9bac43 |
+ }
|
|
|
9bac43 |
if (s->ctx && !s->dataplane_fenced) {
|
|
|
9bac43 |
if (blk_op_is_blocked(sd->conf.blk, BLOCK_OP_TYPE_DATAPLANE, errp)) {
|
|
|
9bac43 |
return;
|
|
|
9bac43 |
--
|
|
|
9bac43 |
1.8.3.1
|
|
|
9bac43 |
|