This is a continuation of Emanuele Esposito's work to remove the AioContext lock in virtio-blk. In the past it was necessary to acquire the AioContext lock in order to do I/O. Paolo Bonzini and Emanuele have removed the need for the AioContext in the core block layer code, with a few exceptions like blk_drain() and blk_set_aio_context().
This patch series annotates virtio-blk functions with IO_CODE()/GLOBAL_STATE_CODE() so it's clear in which context they are called. It also removes unnecessary AioContext locks. The end result is that virtio-blk rarely takes the AioContext lock. Future patch series will add support for multiple IOThreads so that true multi-queue can be achieved, but right now virtio-blk still has unprotected shared state like s->rq so that needs to wait for another day. Based-on: <20221102182337.252202-1-stefa...@redhat.com> Emanuele Giuseppe Esposito (6): virtio_queue_aio_attach_host_notifier: remove AioContext lock block-backend: enable_write_cache should be atomic virtio: categorize callbacks in GS virtio-blk: mark GLOBAL_STATE_CODE functions virtio-blk: mark IO_CODE functions virtio-blk: remove unnecessary AioContext lock from function already safe Stefan Hajnoczi (2): virtio-blk: don't acquire AioContext in virtio_blk_handle_vq() virtio-blk: minimize virtio_blk_reset() AioContext lock region include/block/aio-wait.h | 4 +- block/block-backend.c | 6 +-- hw/block/dataplane/virtio-blk.c | 18 +++++-- hw/block/virtio-blk.c | 92 ++++++++++++++++++++++++--------- hw/scsi/virtio-scsi-dataplane.c | 10 ++-- hw/virtio/virtio-bus.c | 5 ++ hw/virtio/virtio-pci.c | 2 + hw/virtio/virtio.c | 8 +++ util/aio-wait.c | 2 +- 9 files changed, 106 insertions(+), 41 deletions(-) -- 2.38.1