[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 07/29] virtio-scsi: don't process IO on fenced dataplane
From: |
Paolo Bonzini |
Subject: |
[PULL 07/29] virtio-scsi: don't process IO on fenced dataplane |
Date: |
Fri, 26 Feb 2021 09:05:04 +0100 |
From: Maxim Levitsky <mlevitsk@redhat.com>
If virtio_scsi_dataplane_start fails, there is a small window when it drops the
aio lock (in aio_wait_bh_oneshot) and the dataplane's AIO handler can
still run during that window.
This is done after the dataplane was marked as fenced, thus we use this flag
to avoid it doing any IO.
Signed-off-by: Maxim Levitsky <mlevitsk@redhat.com>
Message-Id: <20201217150040.906961-2-mlevitsk@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
hw/scsi/virtio-scsi-dataplane.c | 24 +++++++++++++++---------
1 file changed, 15 insertions(+), 9 deletions(-)
diff --git a/hw/scsi/virtio-scsi-dataplane.c b/hw/scsi/virtio-scsi-dataplane.c
index 2c83a0ab1f..4ad8793406 100644
--- a/hw/scsi/virtio-scsi-dataplane.c
+++ b/hw/scsi/virtio-scsi-dataplane.c
@@ -52,12 +52,14 @@ void virtio_scsi_dataplane_setup(VirtIOSCSI *s, Error
**errp)
static bool virtio_scsi_data_plane_handle_cmd(VirtIODevice *vdev,
VirtQueue *vq)
{
- bool progress;
+ bool progress = false;
VirtIOSCSI *s = VIRTIO_SCSI(vdev);
virtio_scsi_acquire(s);
- assert(s->ctx && s->dataplane_started);
- progress = virtio_scsi_handle_cmd_vq(s, vq);
+ if (!s->dataplane_fenced) {
+ assert(s->ctx && s->dataplane_started);
+ progress = virtio_scsi_handle_cmd_vq(s, vq);
+ }
virtio_scsi_release(s);
return progress;
}
@@ -65,12 +67,14 @@ static bool virtio_scsi_data_plane_handle_cmd(VirtIODevice
*vdev,
static bool virtio_scsi_data_plane_handle_ctrl(VirtIODevice *vdev,
VirtQueue *vq)
{
- bool progress;
+ bool progress = false;
VirtIOSCSI *s = VIRTIO_SCSI(vdev);
virtio_scsi_acquire(s);
- assert(s->ctx && s->dataplane_started);
- progress = virtio_scsi_handle_ctrl_vq(s, vq);
+ if (!s->dataplane_fenced) {
+ assert(s->ctx && s->dataplane_started);
+ progress = virtio_scsi_handle_ctrl_vq(s, vq);
+ }
virtio_scsi_release(s);
return progress;
}
@@ -78,12 +82,14 @@ static bool virtio_scsi_data_plane_handle_ctrl(VirtIODevice
*vdev,
static bool virtio_scsi_data_plane_handle_event(VirtIODevice *vdev,
VirtQueue *vq)
{
- bool progress;
+ bool progress = false;
VirtIOSCSI *s = VIRTIO_SCSI(vdev);
virtio_scsi_acquire(s);
- assert(s->ctx && s->dataplane_started);
- progress = virtio_scsi_handle_event_vq(s, vq);
+ if (!s->dataplane_fenced) {
+ assert(s->ctx && s->dataplane_started);
+ progress = virtio_scsi_handle_event_vq(s, vq);
+ }
virtio_scsi_release(s);
return progress;
}
--
2.29.2
- [PULL 16/29] qemu-options: update to show preferred boolean syntax for -chardev, (continued)
- [PULL 16/29] qemu-options: update to show preferred boolean syntax for -chardev, Paolo Bonzini, 2021/02/26
- [PULL 17/29] qemu-options: update to show preferred boolean syntax for -spice, Paolo Bonzini, 2021/02/26
- [PULL 20/29] qemu-options: update to show preferred boolean syntax for -vnc, Paolo Bonzini, 2021/02/26
- [PULL 21/29] docs: update to show preferred boolean syntax for -chardev, Paolo Bonzini, 2021/02/26
- [PULL 23/29] docs: update to show preferred boolean syntax for -cpu, Paolo Bonzini, 2021/02/26
- [PULL 28/29] chardev: do not use short form boolean options in non-QemuOpts character device descriptions, Paolo Bonzini, 2021/02/26
- [PULL 26/29] target/i386: Add bus lock debug exception support, Paolo Bonzini, 2021/02/26
- [PULL 29/29] tcg/i386: rdpmc: fix the the condtions, Paolo Bonzini, 2021/02/26
- [PULL 04/29] scsi: make io_timeout configurable, Paolo Bonzini, 2021/02/26
- [PULL 08/29] scsi-disk: move scsi_handle_rw_error earlier, Paolo Bonzini, 2021/02/26
- [PULL 07/29] virtio-scsi: don't process IO on fenced dataplane,
Paolo Bonzini <=
- [PULL 11/29] scsi-disk: pass SCSI status to scsi_handle_rw_error, Paolo Bonzini, 2021/02/26
- [PULL 09/29] scsi-disk: do not complete requests early for rerror/werror=ignore, Paolo Bonzini, 2021/02/26
- [PULL 15/29] gdbstub: use preferred boolean option syntax, Paolo Bonzini, 2021/02/26
- [PULL 14/29] char: don't fail when client is not connected, Paolo Bonzini, 2021/02/26
- [PULL 19/29] qemu-options: update to show preferred boolean syntax for -incoming, Paolo Bonzini, 2021/02/26
- [PULL 22/29] docs: update to show preferred boolean syntax for -vnc, Paolo Bonzini, 2021/02/26
- [PULL 24/29] target/i386: update to show preferred boolean syntax for -cpu, Paolo Bonzini, 2021/02/26
- [PULL 25/29] qom/object.c: Fix typo, Paolo Bonzini, 2021/02/26
- [PULL 27/29] vl: deprecate -writeconfig, Paolo Bonzini, 2021/02/26
- Re: [PULL 00/29] Misc patches for 2021-02-25, no-reply, 2021/02/26