On 02/17/2016 06:28 PM, Vladimir Sementsov-Ogievskiy wrote:
This series add persistent dirty bitmaps feature to qcow2.
Specification is in docs/spec/qcow2.txt (not merged yet, see
[PATCH v10] spec: add qcow2 bitmaps extension specification)
This series are based on Fam's
[PATCH v2 00/13] Dirty bitmap changes for migration/persistence work
(meta bitmaps not used, and only hbitmap_deserialize_finish from
serialization)
This also needs some preparation patches, most of them are in my
bitmap-migration series. I've not listed them here to keep things
simpler, this is RFC any way.
v4:
Previous version was posted more than five months ago, so I will not
carefully list all changes.
What should be noted:
- some changes are made to sutisfy last version of specification
- removed staff, related to possibility of saving bitmaps for one
disk in the other qcow2.
- to make bitmap store/load zero-copy, I've moved load/store code to
HBitmap - this is new patch 01.
so, bdrv_dirty_bitmap_serialize_part and friends are not needed,
only hbitmap_deserialize_finish, to repair bitmap consistency after
loading its last level.
- two patches added about AUTO and EXTRA_DATA_COMPATIBLE flags
- some fixes made after John's comments on v3
Vladimir Sementsov-Ogievskiy (17):
hbitmap: load/store
qcow2: Bitmaps extension: structs and consts
qcow2-dirty-bitmap: read dirty bitmap directory
qcow2-dirty-bitmap: add qcow2_bitmap_load()
qcow2-dirty-bitmap: add qcow2_bitmap_store()
qcow2: add dirty bitmaps extension
qcow2-dirty-bitmap: add qcow2_bitmap_load_check()
block: store persistent dirty bitmaps
block: add bdrv_load_dirty_bitmap()
qcow2-dirty-bitmap: add autoclear bit
qemu: command line option for dirty bitmaps
qcow2-dirty-bitmap: add IN_USE flag
qcow2-dirty-bitmaps: disallow stroing bitmap to other bs
iotests: add VM.test_launcn()
iotests: test internal persistent dirty bitmap
qcow2-dirty-bitmap: add AUTO flag
qcow2-dirty-bitmap: add EXTRA_DATA_COMPATIBLE flag
block.c | 3 +
block/Makefile.objs | 2 +-
block/dirty-bitmap.c | 101 +++++
block/qcow2-dirty-bitmap.c | 839 ++++++++++++++++++++++++++++++++++++++++++
block/qcow2.c | 105 +++++-
block/qcow2.h | 59 +++
blockdev.c | 36 ++
include/block/block_int.h | 9 +
include/block/dirty-bitmap.h | 21 ++
include/qemu/hbitmap.h | 12 +
include/sysemu/blockdev.h | 1 +
include/sysemu/sysemu.h | 1 +
qemu-options.hx | 35 ++
tests/qemu-iotests/160 | 112 ++++++
tests/qemu-iotests/160.out | 21 ++
tests/qemu-iotests/group | 1 +
tests/qemu-iotests/iotests.py | 25 ++
util/hbitmap.c | 182 +++++++++
vl.c | 78 ++++
19 files changed, 1640 insertions(+), 3 deletions(-)
create mode 100644 block/qcow2-dirty-bitmap.c
create mode 100755 tests/qemu-iotests/160
create mode 100644 tests/qemu-iotests/160.out
Guys?