Welcome to the "incremental backup" newsletter, where we discuss exciting developments in non-redundant backup technology.
This patchset enables the in-memory part of the incremental backup feature. There are two series on the mailing list now by Vladimir Sementsov-Ogievskiy that enable the migration and persistence of dirty bitmaps. V12 has a lot of tiny changes from V11, so I've lost a lot of R-B fields again. Sorry! For a fuller changelog, see the V11 cover letter in the qemu-devel archives. This series and most patches were originally by Fam Zheng. Highlights: - Renamed "node-ref" parameter to "node" in all QMP patches. (A rose by any other name? ...) - Fuller, more robust iotests. - Fixed progress percentages for incremental backup jobs. - This patch relies upon a blkdebug fix, included as patch #16, but also posted separately on-list. V12: - Changed authorship from Fam Zheng to John Snow on most patches - 02: Fix the error_setg leak in bdrv_dirty_bitmap_lookup - Fix error phrasing in bdrv_dirty_bitmap_lookup - Renamed "node-ref" to "node" for QMP commands. - 03: Granularity helper no longer requires a BDS argument. - 04: Return early if the second bitmap is empty. - 05: Renamed the 'enabled' field to 'disabled to emphasize what the default operating state is. - We now guard against bit sets or resets with the bitmap is disabled, making it a more pure "read only" mode. - Some documentation phrasing changes. - 06: Removed explicit "frozen" state in favor of an implicit one. A successor present implies a frozen state. - Updated all functions that target a single bitmap to use assertions that the bitmap they are trying to modify is not frozen/disabled. - Functions that target multiple bitmaps use only a conditional, and will silently skip disabled bitmaps. - thaw() function removed. It is implicitly handled in reclaim and abdicate. - Added check for return code of hbitmap_merge. - Functions now check against enable OR disable when in frozen state, for consistency and simplicity. - Add "frozen" state documentation to remove/enable/disable QMP commands. - 07: Some documentation for bdrv_set_dirty_iter. - Move function calls outside of assert() - Cleanup the unused successor if we do not start the backup - Version documentation added for dirty-bitmap to block-core.json - Job progress is now reported for incremental backup jobs. - 08: bdrv_dirty_bitmap_clear is now in its own patch, here. - bdrv_dirty_bitmap_clear no longer takes a BDS argument. - 09: Added a transaction for bdrv_dirty_bitmap_clear. - 10: Change 'enabled' field to 'disabled' field, to match above decision in patch 05. - 12: Removed extraneous BDS arguments from most bitmap functions. - 13-15: New set of iotests. - 16: blkdebug fix, already posted upstream. - 17: Final iotest, testing failure case. Fam Zheng (1): qapi: Add optional field "name" to block dirty bitmap John Snow (16): qmp: Add block-dirty-bitmap-add and block-dirty-bitmap-remove block: Introduce bdrv_dirty_bitmap_granularity() hbitmap: add hbitmap_merge qmp: Add block-dirty-bitmap-enable and block-dirty-bitmap-disable block: Add bitmap successors qmp: Add support of "dirty-bitmap" sync mode for drive-backup qmp: add block-dirty-bitmap-clear qapi: Add transaction support to block-dirty-bitmap operations qmp: Add dirty bitmap status fields in query-block block: add BdrvDirtyBitmap documentation block: Ensure consistent bitmap function prototypes iotests: add invalid input incremental backup tests iotests: add simple incremental backup case iotests: add transactional incremental backup test blkdebug: fix "once" rule iotests: add incremental backup failure recovery test block.c | 225 ++++++++++++++++++++++++-- block/backup.c | 149 ++++++++++++++--- block/blkdebug.c | 6 +- block/mirror.c | 39 ++--- blockdev.c | 366 +++++++++++++++++++++++++++++++++++++++++- hmp.c | 3 +- include/block/block.h | 33 +++- include/block/block_int.h | 2 + include/qemu/hbitmap.h | 11 ++ migration/block.c | 9 +- qapi-schema.json | 6 +- qapi/block-core.json | 122 +++++++++++++- qmp-commands.hx | 92 ++++++++++- tests/qemu-iotests/026.out | 24 +-- tests/qemu-iotests/112 | 305 +++++++++++++++++++++++++++++++++++ tests/qemu-iotests/112.out | 5 + tests/qemu-iotests/group | 1 + tests/qemu-iotests/iotests.py | 24 ++- util/hbitmap.c | 32 ++++ 19 files changed, 1341 insertions(+), 113 deletions(-) create mode 100644 tests/qemu-iotests/112 create mode 100644 tests/qemu-iotests/112.out -- 1.9.3