v6: Rebased v4 of the series on top of qemu.git. (skipping v5 since it was used by me as a private sending, for those who received it, the code is the same :)
This is the in memory part of the incremental backup feature. With the added commands, we can create a bitmap on a block backend, from which point of time all the writes are tracked by the bitmap, marking sectors as dirty. Later, we call drive-backup and pass the bitmap to it, to do an incremental backup. See the last patch which adds some tests for this use case. Fam Fam Zheng (10): qapi: Add optional field "name" to block dirty bitmap qmp: Add block-dirty-bitmap-add and block-dirty-bitmap-remove block: Introduce bdrv_dirty_bitmap_granularity() hbitmap: Add hbitmap_copy block: Add bdrv_copy_dirty_bitmap and bdrv_reset_dirty_bitmap qmp: Add block-dirty-bitmap-enable and block-dirty-bitmap-disable qmp: Add support of "dirty-bitmap" sync mode for drive-backup qapi: Add transaction support to block-dirty-bitmap-{add,enable,disable} qmp: Add dirty bitmap 'enabled' field in query-block qemu-iotests: Add tests for drive-backup sync=dirty-bitmap block-migration.c | 2 +- block.c | 82 ++++++++++++++++- block/backup.c | 54 +++++++++++- block/mirror.c | 6 +- blockdev.c | 198 +++++++++++++++++++++++++++++++++++++++++- hmp.c | 4 +- include/block/block.h | 15 +++- include/block/block_int.h | 4 + include/qemu/hbitmap.h | 8 ++ qapi-schema.json | 5 +- qapi/block-core.json | 120 +++++++++++++++++++++++-- qmp-commands.hx | 66 +++++++++++++- tests/qemu-iotests/056 | 33 ++++++- tests/qemu-iotests/056.out | 4 +- tests/qemu-iotests/iotests.py | 8 ++ util/hbitmap.c | 16 ++++ 16 files changed, 603 insertions(+), 22 deletions(-) -- 1.9.3