This is based on top of my request converging series: [PATCH v4 0/9] virtio-blk: Converge VirtIOBlockRequest into VirtIOBlockReq
Most of the request handlings are already the same now between dataplane and non-dataplane, except the missing IO accounting, error reporting and multiwrite. With this series, dataplane pulls in all of them by reusing non-dataplane handling code. Thread safety of error reporting relies on Paolo's series: [PATCH 0/5] qemu-char/monitor: make monitor_puts thread safe [PATCH v2 0/2] block: thread-safety patches for virtio-blk dataplane rerror/werror Fam Zheng (4): virtio-blk: Make request completion function virtual virtio-blk: Export request handling functions to dataplane virtio-blk: Unify {non-,}dataplane's request handlings virtio-blk: Rename complete_request_early to complete_request_vring Stefan Hajnoczi (2): block: make bdrv_query_stats() static block: acquire AioContext in qmp_query_blockstats() block/qapi.c | 6 +- hw/block/dataplane/virtio-blk.c | 180 ++++------------------------------------ hw/block/virtio-blk.c | 19 +++-- include/block/qapi.h | 1 - include/hw/virtio/virtio-blk.h | 12 +++ 5 files changed, 42 insertions(+), 176 deletions(-) -- 2.0.0