Introduction ------------ This implements incremental backup.
A convenient option "bitmap-use-mode" for drive-backup is introduced since v1. Commands -------- A new sync mode for drive-backup is introduced: drive-backup device=.. mode=.. sync=dirty-bitmap bitmap=bitmap0 bitmap-use-mode=reset This mode will scan dirty bitmap "bitmap0" and only copy all dirty sectors to target. bitmap-use-mode controls what operation is done on the given bitmap: - reset: Clear all the bits (block job save a copy) - consume: Block job takes the bitmap and make it invisible to user, and release it after use. A few low level commands related to dirty bitmap are also added: dirty-bitmap-add dirty-bitmap-remove dirty-bitmap-enable dirty-bitmap-disable Example ------- (QMP) dirty-bitmap-add device=? name=bitmap0 [guest writes to device] (QMP) drive-backup device=? target=backup1.qcow2 format=qcow2 \ sync=dirty-bitmap bitmap=bitmap0 bitmap-use-mode=reset [guest writes more to device] (QMP) drive-backup device=? target=backup2.qcow2 format=qcow2 \ sync=dirty-bitmap bitmap=bitmap0 bitmap-use-mode=reset ... Fam Fam Zheng (9): qapi: Add optional field "name" to block dirty bitmap qmp: Add dirty-bitmap-add and dirty-bitmap-remove block: Handle error of bdrv_getlength in bdrv_create_dirty_bitmap block: Introduce bdrv_dirty_bitmap_granularity() hbitmap: Add hbitmap_copy block: Add bdrv_copy_dirty_bitmap and bdrv_reset_dirty_bitmap qmp: Add dirty-bitmap-enable and dirty-bitmap-disable qmp: Add support of "dirty-bitmap" sync mode for drive-backup qapi: Add transaction support to dirty-bitmap-{add,disable} block-migration.c | 3 +- block.c | 90 ++++++++++++++++++++++- block/backup.c | 51 ++++++++++++- block/mirror.c | 6 +- blockdev.c | 181 +++++++++++++++++++++++++++++++++++++++++++++- hmp.c | 4 +- include/block/block.h | 16 +++- include/block/block_int.h | 3 + include/qemu/hbitmap.h | 8 ++ qapi-schema.json | 115 +++++++++++++++++++++++++++-- qmp-commands.hx | 66 ++++++++++++++++- util/hbitmap.c | 13 ++++ 12 files changed, 538 insertions(+), 18 deletions(-) -- 1.9.0