From: Emanuele Giuseppe Esposito <eesposit@redhat.com>
To: qemu-block@nongnu.org
Cc: Kevin Wolf <kwolf@redhat.com>, Hanna Reitz <hreitz@redhat.com>,
Stefan Hajnoczi <stefanha@redhat.com>,
"Michael S. Tsirkin" <mst@redhat.com>,
Paolo Bonzini <pbonzini@redhat.com>, Fam Zheng <fam@euphon.net>,
qemu-devel@nongnu.org,
Emanuele Giuseppe Esposito <eesposit@redhat.com>
Subject: [PATCH 0/8] virtio-blk: removal of AioContext lock
Date: Thu, 9 Jun 2022 10:37:19 -0400 [thread overview]
Message-ID: <20220609143727.1151816-1-eesposit@redhat.com> (raw)
This serie aims to free virtio-blk (and in the future all
virtio devices) from the AioContext lock.
First step is to understand which functions are running in
the main loop and which are in iothreads.
Because many functions in virtio-blk are callbacks called
in some other virtio (pci, mmio, bus and so on) callbacks,
this is not trivial.
Patches 4-5-6 aim to split at least virtio-blk API.
There are two main things to consider when comparing this serie
with the block layer API split:
- sometimes we have data that is accessed by both IO and GS
functions, but never together. For example, when the main
loop access some data, iothread is guaranteed to be stopped.
- taking into account the multiqueue setup:
this work aims to allow an iothread to access multiple
virtio queues, while assigning the same queue to only one
iothread. Currently, we have a single iothread running,
so if we know that the main loop is not interfering, we
are safe. However, if we want to consider multiple iothreads
concurrently running, we need to take additional precautions.
A good example of the above is in patch 7.
Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com>
Emanuele Giuseppe Esposito (8):
virtio_queue_aio_attach_host_notifier: remove AioContext lock
block-backend: enable_write_cache should be atomic
virtio_blk_process_queued_requests: always run in a bh
virtio: categorize callbacks in GS
virtio-blk: mark GLOBAL_STATE_CODE functions
virtio-blk: mark IO_CODE functions
VirtIOBlock: protect rq with its own lock
virtio-blk: remove unnecessary AioContext lock from function already
safe
block/block-backend.c | 6 +-
hw/block/dataplane/virtio-blk.c | 32 +++++++-
hw/block/virtio-blk.c | 132 ++++++++++++++++++++++++--------
hw/scsi/virtio-scsi-dataplane.c | 12 ++-
hw/virtio/virtio-bus.c | 5 ++
hw/virtio/virtio-pci.c | 2 +
hw/virtio/virtio.c | 8 ++
include/hw/virtio/virtio-blk.h | 6 +-
8 files changed, 163 insertions(+), 40 deletions(-)
--
2.31.1
next reply other threads:[~2022-06-09 16:00 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-06-09 14:37 Emanuele Giuseppe Esposito [this message]
2022-06-09 14:37 ` [PATCH 1/8] virtio_queue_aio_attach_host_notifier: remove AioContext lock Emanuele Giuseppe Esposito
2022-07-05 14:11 ` Stefan Hajnoczi
2022-07-08 9:01 ` Emanuele Giuseppe Esposito
2022-07-12 12:47 ` Stefan Hajnoczi
2022-06-09 14:37 ` [PATCH 2/8] block-backend: enable_write_cache should be atomic Emanuele Giuseppe Esposito
2022-07-05 14:16 ` Stefan Hajnoczi
2022-06-09 14:37 ` [PATCH 3/8] virtio_blk_process_queued_requests: always run in a bh Emanuele Giuseppe Esposito
2022-07-05 14:23 ` Stefan Hajnoczi
2022-07-08 9:07 ` Emanuele Giuseppe Esposito
2022-07-12 12:18 ` Stefan Hajnoczi
2022-06-09 14:37 ` [PATCH 4/8] virtio: categorize callbacks in GS Emanuele Giuseppe Esposito
2022-06-16 16:50 ` Michael S. Tsirkin
2022-07-05 14:25 ` Stefan Hajnoczi
2022-06-09 14:37 ` [PATCH 5/8] virtio-blk: mark GLOBAL_STATE_CODE functions Emanuele Giuseppe Esposito
2022-07-05 14:27 ` Stefan Hajnoczi
2022-06-09 14:37 ` [PATCH 6/8] virtio-blk: mark IO_CODE functions Emanuele Giuseppe Esposito
2022-07-05 14:39 ` Stefan Hajnoczi
2022-07-08 9:19 ` Emanuele Giuseppe Esposito
2022-07-12 12:26 ` Stefan Hajnoczi
2022-06-09 14:37 ` [PATCH 7/8] VirtIOBlock: protect rq with its own lock Emanuele Giuseppe Esposito
2022-07-05 14:45 ` Stefan Hajnoczi
2022-07-08 9:33 ` Emanuele Giuseppe Esposito
2022-07-08 11:22 ` Emanuele Giuseppe Esposito
2022-07-12 12:34 ` Stefan Hajnoczi
2022-07-12 12:29 ` Stefan Hajnoczi
2022-06-09 14:37 ` [PATCH 8/8] virtio-blk: remove unnecessary AioContext lock from function already safe Emanuele Giuseppe Esposito
2022-07-05 14:48 ` Stefan Hajnoczi
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=20220609143727.1151816-1-eesposit@redhat.com \
--to=eesposit@redhat.com \
--cc=fam@euphon.net \
--cc=hreitz@redhat.com \
--cc=kwolf@redhat.com \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-block@nongnu.org \
--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.