[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 0/8] virtio-blk: removal of AioContext lock
From: |
Emanuele Giuseppe Esposito |
Subject: |
[PATCH 0/8] virtio-blk: removal of AioContext lock |
Date: |
Thu, 9 Jun 2022 10:37:19 -0400 |
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
- [PATCH 0/8] virtio-blk: removal of AioContext lock,
Emanuele Giuseppe Esposito <=
- [PATCH 1/8] virtio_queue_aio_attach_host_notifier: remove AioContext lock, Emanuele Giuseppe Esposito, 2022/06/09
- [PATCH 2/8] block-backend: enable_write_cache should be atomic, Emanuele Giuseppe Esposito, 2022/06/09
- [PATCH 4/8] virtio: categorize callbacks in GS, Emanuele Giuseppe Esposito, 2022/06/09
- [PATCH 3/8] virtio_blk_process_queued_requests: always run in a bh, Emanuele Giuseppe Esposito, 2022/06/09
- [PATCH 7/8] VirtIOBlock: protect rq with its own lock, Emanuele Giuseppe Esposito, 2022/06/09
- [PATCH 8/8] virtio-blk: remove unnecessary AioContext lock from function already safe, Emanuele Giuseppe Esposito, 2022/06/09
- [PATCH 5/8] virtio-blk: mark GLOBAL_STATE_CODE functions, Emanuele Giuseppe Esposito, 2022/06/09
- [PATCH 6/8] virtio-blk: mark IO_CODE functions, Emanuele Giuseppe Esposito, 2022/06/09