v2: 1. bug-fixes, that are already in upstream, and renaming of function bdrv_reset_dirty_bitmap (which is already in Snow's series) are dropped 2. bitmap store/restore: the concept renamed to serialization, added function hbitmap_deserialize_part0, to not transfer zero blocks 3. migration dirty parameter: added description comment 4. Other patches are new.
v2.rfc: Actually, in this version of the series I'm trying not use migration/block.c at all. Instead a separate migration unit is added in the new file migration/dirty-bitmap.c. Now bitmaps are migrated like blocks in block migration, they have their "dirty-dirty" bitmaps, for tracking set/unset changes during migration. The advantages are: - no complications of migration/block.c - separate dirty-dirty bitmaps provide handling of "unset's" - more effective meta-data/data ratio - no tiny bitmap-blocks. v1: These patches provide dirty bitmap migration feature. Only named dirty bitmaps are to be migrated. Migration is made as a part of block migration in block-migration.c. Dirty bitmap migration may be enabled by "dirty" parameter for qmp migrate command. If "blk" and "inc" parameters are false when "dirty" is true block migration is actually skipped: no allocatoions, no bdrv_read's, no bdrv_write's, only bitmaps are migrated. The patch set includes two my previous bug fixes, which are necessary for it. The patch set is based on Incremental backup series by John Snow. Vladimir Sementsov-Ogievskiy (8): qmp: print dirty bitmap hbitmap: serialization block: BdrvDirtyBitmap serialization interface block: add dirty-dirty bitmaps block: add bdrv_dirty_bitmap_enabled() block: add bdrv_next_dirty_bitmap() migration: add dirty parameter migration: add migration/dirty-bitmap.c block.c | 128 +++++++++ blockdev.c | 13 + hmp-commands.hx | 27 +- hmp.c | 12 +- hmp.h | 1 + include/block/block.h | 22 ++ include/migration/block.h | 1 + include/migration/migration.h | 1 + include/qemu/hbitmap.h | 59 ++++ migration/Makefile.objs | 2 +- migration/dirty-bitmap.c | 606 ++++++++++++++++++++++++++++++++++++++++++ migration/migration.c | 4 +- qapi-schema.json | 10 +- qapi/block-core.json | 3 + qmp-commands.hx | 10 +- savevm.c | 3 +- util/hbitmap.c | 96 +++++++ vl.c | 1 + 18 files changed, 987 insertions(+), 12 deletions(-) create mode 100644 migration/dirty-bitmap.c -- 1.9.1