Differences to RFC v3 include proper conversion of qcow2, addressing Stefan's comments and fixing some error cases in which two write requests to the same location might conflict.
Also worth noting is that bdrv_aio_pwrite is dropped. It was unsafe with respect to multiple concurrent requests on the same sector and it's impossible to safely emulate byte-wise access with bdrv_aio_readv/writev without introducing yet another queue. Instead we fall back to synchronous bdrv_pwrite now with unaligned requests in block-queue (they are rare). Kevin Wolf (4): Make vm_stop available for block layer Add block-queue Test cases for block-queue qcow2: Use block-queue Makefile | 1 + Makefile.objs | 2 +- block-queue.c | 875 ++++++++++++++++++++++++++++++++++++++++++++++++ block-queue.h | 61 ++++ block/qcow2-cluster.c | 139 +++++---- block/qcow2-refcount.c | 217 +++++++----- block/qcow2-snapshot.c | 106 +++++-- block/qcow2.c | 144 +++++++- block/qcow2.h | 33 ++- check-block-queue.c | 402 ++++++++++++++++++++++ cpus.c | 8 +- qemu-common.h | 3 + qemu-tool.c | 5 + sysemu.h | 1 - 14 files changed, 1793 insertions(+), 204 deletions(-) create mode 100644 block-queue.c create mode 100644 block-queue.h create mode 100644 check-block-queue.c -- 1.7.2.3