Hi all! Here is push-backup with fleecing. What is it:
1. Make fleecing scheme guest blk | |root v copy-before-write filter -------> temp qcow2 | | |file | backing V | active disk <------------------------- 2. Start backup job from temp qcow2 to final remote target (NBD or something) Benefit in comparison with simple backup job: for remote final target write operations are not very fast. And guest have to wait for copy-before-write operations. With fleecing scheme target for copy-before-write operations is local qcow2 file with faster access than actual backup target. So, guest is less disturbed by copy-before-write operations. Based-on: <20210721100555.45594-1-vsement...@virtuozzo.com> ([PATCH v6 00/33] block: publish backup-top filter) v2: 01: changed to simply check s->target->perm 06: make explicit immutable-source parameter instead of auto-detecting Vladimir Sementsov-Ogievskiy (6): block/block-copy: use write-unchanged for fleecing scheme block/copy-before-write: require BLK_PERM_WRITE_UNCHANGED for fleecing block: share writes on backing child of fleecing node block: blk_root(): return non-const pointer qapi: backup: add immutable-source paramter iotests/image-fleecing: test push backup with fleecing qapi/block-core.json | 12 ++- block/copy-before-write.h | 1 + include/block/block_int.h | 1 + include/sysemu/block-backend.h | 2 +- block.c | 3 +- block/backup.c | 71 ++++++++++++- block/block-backend.c | 2 +- block/block-copy.c | 18 +++- block/copy-before-write.c | 48 ++++++++- block/replication.c | 2 +- blockdev.c | 1 + tests/qemu-iotests/tests/image-fleecing | 105 +++++++++++++++----- tests/qemu-iotests/tests/image-fleecing.out | 61 ++++++++++++ 13 files changed, 287 insertions(+), 40 deletions(-) -- 2.29.2