qapi/block-core.json | 6 +- include/block/aio.h | 3 +- include/block/block-common.h | 7 + include/block/block-global-state.h | 32 +- include/block/block-io.h | 1 - include/block/block_int-common.h | 34 +- include/block/block_int-global-state.h | 14 +- include/sysemu/block-backend-global-state.h | 4 +- block.c | 348 +++++++--- block/blklogwrites.c | 4 + block/blkverify.c | 2 + block/block-backend.c | 64 +- block/copy-before-write.c | 10 +- block/crypto.c | 6 +- block/graph-lock.c | 26 +- block/io.c | 23 +- block/mirror.c | 8 + block/preallocate.c | 133 ++-- block/qcow.c | 5 +- block/qcow2.c | 7 +- block/quorum.c | 23 +- block/replication.c | 9 + block/snapshot.c | 2 + block/stream.c | 20 +- block/vmdk.c | 15 + blockdev.c | 23 +- blockjob.c | 2 + hw/nvme/ctrl.c | 7 - qemu-img.c | 8 +- softmmu/dma-helpers.c | 8 - tests/unit/test-bdrv-drain.c | 31 +- tests/unit/test-bdrv-graph-mod.c | 20 + tests/unit/test-block-iothread.c | 3 + util/thread-pool.c | 8 - scripts/block-coroutine-wrapper.py | 18 +- tests/qemu-iotests/051.pc.out | 6 +- tests/qemu-iotests/122.out | 84 +-- tests/qemu-iotests/146.out | 780 +++++++++++------------ tests/qemu-iotests/154.out | 194 +++--- tests/qemu-iotests/179.out | 178 +++--- tests/qemu-iotests/209.out | 4 +- tests/qemu-iotests/221.out | 16 +- tests/qemu-iotests/223.out | 60 +- tests/qemu-iotests/241.out | 10 +- tests/qemu-iotests/244.out | 24 +- tests/qemu-iotests/252.out | 10 +- tests/qemu-iotests/253.out | 20 +- tests/qemu-iotests/274.out | 48 +- tests/qemu-iotests/tests/nbd-qemu-allocation.out | 16 +- tests/qemu-iotests/tests/qemu-img-bitmaps.out | 24 +- 50 files changed, 1375 insertions(+), 1033 deletions(-)