From: Paolo Bonzini <pbonzini@redhat.com>
To: Fam Zheng <famz@redhat.com>, qemu-devel@nongnu.org
Cc: kwolf@redhat.com, stefanha@redhat.com
Subject: Re: [Qemu-devel] [PATCH 3/3] virtio-scsi-dataplane: Use main thread BH to set BDS' aio context
Date: Thu, 12 Feb 2015 15:29:50 +0100 [thread overview]
Message-ID: <54DCB8DE.4090302@redhat.com> (raw)
In-Reply-To: <1423718462-25566-4-git-send-email-famz@redhat.com>
On 12/02/2015 06:21, Fam Zheng wrote:
> Before processing a request, virtio-scsi dataplane will check if the
> backend runs on the same context with it. If not, it has to be moved,
> with bdrv_set_aio_context.
>
> However this function is unsafe to be called from IOThread outside BQL.
> The reason is that it calls bdrv_drain_all(), to acquire and drain all
> existing BDS. Therefore there is a deadlock problem.
>
> Fix it by offloading the bdrv_set_aio_context to main loop thread,
> through a BH (#1). This main loop BH will set the context, then notify
> the calling thread with another BH (#2). In BH (#2), we can continue the
> virtio-scsi request processing.
>
> A queue is added to VirtIOSCSI for tracking the pending requests, so in
> virtio_scsi_dataplane_stop, we have to drain them for migration.
>
> Signed-off-by: Fam Zheng <famz@redhat.com>
Could you just do set_aio_context for all devices when starting
dataplane? For example with a new scsi_device_set_aio_context function
(and a new method in SCSIDeviceClass).
Maybe I'm missing the obvious. :)
Paolo
next prev parent reply other threads:[~2015-02-12 14:30 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-02-12 5:20 [Qemu-devel] [PATCH 0/3] virtio-scsi: Fix unsafe bdrv_set_aio_context calls Fam Zheng
2015-02-12 5:21 ` [Qemu-devel] [PATCH 1/3] block: Forbid bdrv_set_aio_context outside BQL Fam Zheng
2015-02-13 13:10 ` Paolo Bonzini
2015-03-10 13:34 ` Stefan Hajnoczi
2015-02-12 5:21 ` [Qemu-devel] [PATCH 2/3] virtio-scsi: Deduplicate cmd queue handling code of dataplane Fam Zheng
2015-02-12 5:21 ` [Qemu-devel] [PATCH 3/3] virtio-scsi-dataplane: Use main thread BH to set BDS' aio context Fam Zheng
2015-02-12 14:29 ` Paolo Bonzini [this message]
2015-02-13 1:21 ` Fam Zheng
2015-02-13 9:38 ` Paolo Bonzini
2015-02-13 10:29 ` Fam Zheng
2015-02-13 10:38 ` Paolo Bonzini
2015-02-13 12:42 ` Fam Zheng
2015-02-13 13:12 ` 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=54DCB8DE.4090302@redhat.com \
--to=pbonzini@redhat.com \
--cc=famz@redhat.com \
--cc=kwolf@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@redhat.com \
/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.