This series adds a copy-on-read block filter driver which works by simply setting the BDRV_REQ_COPY_ON_READ flag on write requests (and otherwise just passing everything through).
Cover letter of v1: http://lists.nongnu.org/archive/html/qemu-block/2018-04/msg00285.html v2: - Renamed the driver "copy-on-read" (from just "cor") [Stefan] - Commit message typo fix in patch 2 [Stefan, Berto] git-backport-diff against v2: Key: [----] : patches are identical [####] : number of functional differences between upstream/downstream patch [down] : patch is downstream-only The flags [FC] indicate (F)unctional and (C)ontextual differences, respectively 001/9:[0020] [FC] 'block: Add COR filter driver' 002/9:[----] [--] 'block: BLK_PERM_WRITE includes ..._UNCHANGED' 003/9:[----] [--] 'block: Add BDRV_REQ_WRITE_UNCHANGED flag' 004/9:[----] [--] 'block: Set BDRV_REQ_WRITE_UNCHANGED for COR writes' 005/9:[----] [--] 'block/quorum: Support BDRV_REQ_WRITE_UNCHANGED' 006/9:[----] [--] 'block: Support BDRV_REQ_WRITE_UNCHANGED in filters' 007/9:[----] [--] 'iotests: Clean up wrap image in 197' 008/9:[0010] [FC] 'iotests: Copy 197 for COR filter driver' 009/9:[0004] [FC] 'iotests: Add test for COR across nodes' Max Reitz (9): block: Add COR filter driver block: BLK_PERM_WRITE includes ..._UNCHANGED block: Add BDRV_REQ_WRITE_UNCHANGED flag block: Set BDRV_REQ_WRITE_UNCHANGED for COR writes block/quorum: Support BDRV_REQ_WRITE_UNCHANGED block: Support BDRV_REQ_WRITE_UNCHANGED in filters iotests: Clean up wrap image in 197 iotests: Copy 197 for COR filter driver iotests: Add test for COR across nodes block/Makefile.objs | 2 +- qapi/block-core.json | 5 +- include/block/block.h | 9 ++- block/blkdebug.c | 9 +-- block/blkreplay.c | 3 + block/blkverify.c | 3 + block/copy-on-read.c | 173 +++++++++++++++++++++++++++++++++++++++++++++ block/io.c | 12 +++- block/mirror.c | 2 + block/quorum.c | 19 +++-- block/raw-format.c | 9 +-- block/throttle.c | 6 +- tests/qemu-iotests/197 | 1 + tests/qemu-iotests/215 | 120 +++++++++++++++++++++++++++++++ tests/qemu-iotests/215.out | 26 +++++++ tests/qemu-iotests/216 | 117 ++++++++++++++++++++++++++++++ tests/qemu-iotests/216.out | 28 ++++++++ tests/qemu-iotests/group | 2 + 18 files changed, 524 insertions(+), 22 deletions(-) create mode 100644 block/copy-on-read.c create mode 100755 tests/qemu-iotests/215 create mode 100644 tests/qemu-iotests/215.out create mode 100755 tests/qemu-iotests/216 create mode 100644 tests/qemu-iotests/216.out -- 2.14.3