qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Paolo Bonzini <pbonzini@redhat.com>
To: qemu-devel@nongnu.org
Cc: Maxim Levitsky <mlevitsk@redhat.com>
Subject: [PULL 07/29] virtio-scsi: don't process IO on fenced dataplane
Date: Fri, 26 Feb 2021 09:05:04 +0100	[thread overview]
Message-ID: <20210226080526.651705-8-pbonzini@redhat.com> (raw)
In-Reply-To: <20210226080526.651705-1-pbonzini@redhat.com>

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




  parent reply	other threads:[~2021-02-26  8:08 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-02-26  8:04 [PULL 00/29] Misc patches for 2021-02-25 Paolo Bonzini
2021-02-26  8:04 ` [PULL 01/29] hvf: Sign the code after installation Paolo Bonzini
2021-02-26  8:04 ` [PULL 02/29] configure: fix --enable-fuzzing linker failures Paolo Bonzini
2021-02-26  8:05 ` [PULL 03/29] multiprocess: move feature to meson_options.txt Paolo Bonzini
2021-02-26  8:05 ` [PULL 04/29] scsi: make io_timeout configurable Paolo Bonzini
2021-02-26  8:05 ` [PULL 05/29] scsi: add tracing for SG_IO commands Paolo Bonzini
2021-02-26  8:05 ` [PULL 06/29] scsi: allow user to set werror as report Paolo Bonzini
2021-02-26  8:05 ` Paolo Bonzini [this message]
2021-02-26  8:05 ` [PULL 08/29] scsi-disk: move scsi_handle_rw_error earlier Paolo Bonzini
2021-02-26  8:05 ` [PULL 09/29] scsi-disk: do not complete requests early for rerror/werror=ignore Paolo Bonzini
2021-02-26  8:05 ` [PULL 10/29] scsi: introduce scsi_sense_from_errno() Paolo Bonzini
2021-02-26  8:05 ` [PULL 11/29] scsi-disk: pass SCSI status to scsi_handle_rw_error Paolo Bonzini
2021-02-26  8:05 ` [PULL 12/29] scsi-disk: pass guest recoverable errors through even for rerror=stop Paolo Bonzini
2021-02-26  8:05 ` [PULL 13/29] scsi: drop 'result' argument from command_complete callback Paolo Bonzini
2021-02-26  8:05 ` [PULL 14/29] char: don't fail when client is not connected Paolo Bonzini
2021-02-26  8:05 ` [PULL 15/29] gdbstub: use preferred boolean option syntax Paolo Bonzini
2021-02-26  8:05 ` [PULL 16/29] qemu-options: update to show preferred boolean syntax for -chardev Paolo Bonzini
2021-02-26  8:05 ` [PULL 17/29] qemu-options: update to show preferred boolean syntax for -spice Paolo Bonzini
2021-02-26  8:05 ` [PULL 18/29] qemu-options: update to show preferred boolean syntax for -netdev Paolo Bonzini
2021-02-26  8:05 ` [PULL 19/29] qemu-options: update to show preferred boolean syntax for -incoming Paolo Bonzini
2021-02-26  8:05 ` [PULL 20/29] qemu-options: update to show preferred boolean syntax for -vnc Paolo Bonzini
2021-02-26  8:05 ` [PULL 21/29] docs: update to show preferred boolean syntax for -chardev Paolo Bonzini
2021-02-26  8:05 ` [PULL 22/29] docs: update to show preferred boolean syntax for -vnc Paolo Bonzini
2021-02-26  8:05 ` [PULL 23/29] docs: update to show preferred boolean syntax for -cpu Paolo Bonzini
2021-02-26  8:05 ` [PULL 24/29] target/i386: " Paolo Bonzini
2021-02-26  8:05 ` [PULL 25/29] qom/object.c: Fix typo Paolo Bonzini
2021-02-26  8:05 ` [PULL 26/29] target/i386: Add bus lock debug exception support Paolo Bonzini
2021-02-26  8:05 ` [PULL 27/29] vl: deprecate -writeconfig Paolo Bonzini
2021-03-01  8:00   ` Markus Armbruster
2021-03-01 10:09     ` Paolo Bonzini
2021-03-01 13:26       ` Markus Armbruster
2021-03-01 13:45         ` Paolo Bonzini
2021-03-01 14:54           ` Markus Armbruster
2021-03-01 15:05             ` Paolo Bonzini
2021-03-01 16:03   ` About '-readconfig' [Was: Re: [PULL 27/29] vl: deprecate -writeconfig] Kashyap Chamarthy
2021-03-01 16:24     ` Paolo Bonzini
2021-03-02 15:36       ` Kashyap Chamarthy
2021-02-26  8:05 ` [PULL 28/29] chardev: do not use short form boolean options in non-QemuOpts character device descriptions Paolo Bonzini
2021-02-26  8:05 ` [PULL 29/29] tcg/i386: rdpmc: fix the the condtions Paolo Bonzini
2021-02-26  8:51 ` [PULL 00/29] Misc patches for 2021-02-25 no-reply
2021-03-03 16:54 ` Peter Maydell

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=20210226080526.651705-8-pbonzini@redhat.com \
    --to=pbonzini@redhat.com \
    --cc=mlevitsk@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 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).