Kevin Wolf identified some issues with the virtio-blk iothread-vq-mapping patch series that was merged at the end of 2023: 1. s->rq is restarted from one AioContext and races with the other iothread-vq-mapping AioContexts. 2. Failure to set the AioContext is no longer fatal since the IO_CODE APIs can be called from any thread. We can relax the error handling behavior. 3. Starting dataplane must self-trigger the ioeventfd even in a drained section. Failure to do so could lead to an unresponsive virtio-blk device.
This patch series addresses these issues. The first few patches merge the hw/block/dataplane/virtio-blk.c code into hw/block/virtio-blk.c so that s->rq can easily be restarted in the correct AioContexts. Stefan Hajnoczi (6): virtio-blk: move dataplane code into virtio-blk.c virtio-blk: rename dataplane create/destroy functions virtio-blk: rename dataplane to ioeventfd virtio-blk: restart s->rq reqs in vq AioContexts virtio-blk: tolerate failure to set BlockBackend AioContext virtio-blk: always set ioeventfd during startup meson.build | 1 - hw/block/dataplane/trace.h | 1 - hw/block/dataplane/virtio-blk.h | 34 --- include/hw/virtio/virtio-blk.h | 16 +- hw/block/dataplane/virtio-blk.c | 404 ------------------------------- hw/block/virtio-blk.c | 412 +++++++++++++++++++++++++++++--- hw/block/dataplane/meson.build | 1 - hw/block/dataplane/trace-events | 5 - 8 files changed, 391 insertions(+), 483 deletions(-) delete mode 100644 hw/block/dataplane/trace.h delete mode 100644 hw/block/dataplane/virtio-blk.h delete mode 100644 hw/block/dataplane/virtio-blk.c delete mode 100644 hw/block/dataplane/trace-events -- 2.43.0
