Hi all! v7: small change: keep fleecing detection logic. I'm now implementing a more effective way to do fleecing, that doesn't rely on backing chain and on serializing requests. So, for this alternative way we'll not need BDRV_REQ_SERIALISING flag. Let's keep automatic addition of this flag when backing-based fleecing detected. So, 06 is changed and renamed, 07 rebased on it.
Patches without r-b: 6, 7, 8, 17, 18 Vladimir Sementsov-Ogievskiy (33): block: introduce bdrv_replace_child_bs() block: introduce blk_replace_bs qdev-properties: PropertyInfo: add realized_set_allowed field qdev: allow setting drive property for realized device block: rename backup-top to copy-before-write block-copy: move detecting fleecing scheme to block-copy block/block-copy: introduce block_copy_set_copy_opts() block/backup: set copy_range and compress after filter insertion block/backup: move cluster size calculation to block-copy block/copy-before-write: relax permission requirements when no parents block/copy-before-write: drop extra bdrv_unref on failure path block/copy-before-write: use file child instead of backing block/copy-before-write: bdrv_cbw_append(): replace child at last block/copy-before-write: introduce cbw_init() block/copy-before-write: cbw_init(): rename variables block/copy-before-write: cbw_init(): use file child after attaching block/copy-before-write: bdrv_cbw_append(): drop unused compress arg block/copy-before-write: cbw_init(): use options block/copy-before-write: initialize block-copy bitmap block/block-copy: make setting progress optional block/copy-before-write: make public block driver qapi: publish copy-before-write filter python/qemu/machine.py: refactor _qemu_args() python/qemu/machine: QEMUMachine: improve qmp() method iotests.py: VM: add own __enter__ method iotests/222: fix pylint and mypy complains iotests/222: constantly use single quotes for strings iotests: move 222 to tests/image-fleecing iotests.py: hmp_qemu_io: support qdev iotests/image-fleecing: proper source device iotests/image-fleecing: rename tgt_node iotests/image-fleecing: prepare for adding new test-case iotests/image-fleecing: add test-case for copy-before-write filter qapi/block-core.json | 25 +- block/{backup-top.h => copy-before-write.h} | 25 +- include/block/block-copy.h | 6 +- include/block/block.h | 2 + include/hw/qdev-properties.h | 1 + include/sysemu/block-backend.h | 1 + block.c | 31 +++ block/backup-top.c | 253 ------------------- block/backup.c | 116 ++------- block/block-backend.c | 8 + block/block-copy.c | 135 ++++++++--- block/copy-before-write.c | 256 ++++++++++++++++++++ hw/core/qdev-properties-system.c | 43 +++- hw/core/qdev-properties.c | 6 +- MAINTAINERS | 4 +- block/meson.build | 2 +- python/qemu/machine/machine.py | 30 ++- tests/qemu-iotests/222 | 159 ------------ tests/qemu-iotests/222.out | 67 ----- tests/qemu-iotests/283 | 35 ++- tests/qemu-iotests/283.out | 4 +- tests/qemu-iotests/297 | 2 +- tests/qemu-iotests/iotests.py | 9 +- tests/qemu-iotests/tests/image-fleecing | 192 +++++++++++++++ tests/qemu-iotests/tests/image-fleecing.out | 139 +++++++++++ 25 files changed, 882 insertions(+), 669 deletions(-) rename block/{backup-top.h => copy-before-write.h} (56%) delete mode 100644 block/backup-top.c create mode 100644 block/copy-before-write.c delete mode 100755 tests/qemu-iotests/222 delete mode 100644 tests/qemu-iotests/222.out create mode 100755 tests/qemu-iotests/tests/image-fleecing create mode 100644 tests/qemu-iotests/tests/image-fleecing.out -- 2.29.2