Hi all! These series introduce backup-top driver. It's a filter-node, which do copy-before-write operation. Mirror uses filter-node for handling guest writes, let's move to filter-node (from write-notifiers) for backup too.
Preparation patches are queued in Max's block branch: Based-on: https://github.com/XanClic/qemu.git block v15: use BdrvChildren in block-copy 01-03: new 04-05: a lot of changes, such as 04: - add new parameters for creation - prepare bcs creation - add target child - refactor bdrv_backup_top_append - drop r-b 05: - move block-copy to use BdrvChildren - drop extra style fixing hunks - iotest 141 output changed v14: Drop range locks, keep old good in-flight requests waiting 12: new patch 14: use old request-waiting scheme instead of range locks Vladimir Sementsov-Ogievskiy (5): block/backup: move in-flight requests handling from backup to block-copy block/backup: move write_flags calculation inside backup_job_create block/block-copy: split block_copy_set_callbacks function block: introduce backup-top filter driver block/backup: use backup-top instead of write notifiers qapi/block-core.json | 8 +- block/backup-top.h | 41 +++++ include/block/block-copy.h | 31 +++- include/block/block_int.h | 1 + block/backup-top.c | 276 +++++++++++++++++++++++++++++++++ block/backup.c | 147 +++++------------- block/block-copy.c | 140 +++++++++-------- block/replication.c | 2 +- blockdev.c | 1 + block/Makefile.objs | 1 + tests/qemu-iotests/056 | 8 +- tests/qemu-iotests/141.out | 2 +- tests/qemu-iotests/257 | 7 +- tests/qemu-iotests/257.out | 306 ++++++++++++++++++------------------- 14 files changed, 628 insertions(+), 343 deletions(-) create mode 100644 block/backup-top.h create mode 100644 block/backup-top.c -- 2.21.0