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