An idea/question.
What about make some const dirty bitmap finctions really const?
bdrv_dirty_bitmap_name(BdrvDirtyBitmap *bitmap) ->
bdrv_dirty_bitmap_name(const BdrvDirtyBitmap *bitmap)
bdrv_dirty_bitmap_size(BdrvDirtyBitmap *bitmap) ->
bdrv_dirty_bitmap_size(const BdrvDirtyBitmap *bitmap)
etc..
I don't know, may be it is not Qemu style or there are some other
restrictions, but in common case strict definitions are better.. In my
persistent series I've included a fix for this "[PATCH 01/17] block: fix
bdrv_dirty_bitmap_granularity()", necessary for my other functions with
const BdrvDirtyBitmap *bitmap.
I can add such fixes into my series (but these series are better place,
I think), or, if it is bad for Qemu, I'll remove all such const's from
my series.
On 20.01.2016 09:11, Fam Zheng wrote:
v2: Various changes addressing John's and Vladimir's comments:
[02/13] typedefs: Add BdrvDirtyBitmap
Skip HBitmapIter because we'll hide it soon. [John]
[03/13] block: Move block dirty bitmap code to separate files
[04/13] block: Remove unused typedef of BlockDriverDirtyHandler
[05/13] block: Hide HBitmap in block dirty bitmap interface
Add assert in bdrv_dirty_bitmap_truncate(). [John]
Add John's rev-by.
[06/13] HBitmap: Introduce "meta" bitmap to track bit changes
Caller of hbitmap_create_meta() frees it with hbitmap_free_meta().
[John, Vladimir]
[07/13] tests: Add test code for meta bitmap
Add John's rev-by.
[08/13] block: Support meta dirty bitmap
Release the meta dirty bitmap in bdrv_release_dirty_bitmap().
[09/13] block: Add two dirty bitmap getters
[10/13] block: Assert that bdrv_release_dirty_bitmap succeeded
Add John's rev-by.
[11/13] hbitmap: serialization
Fix comment for hbitmap_serialization_granularity() and
hbitmap_deserialize_part(). [John]
Document @finish in hbitmap_deserialize_zeroes more clearly.
Fixed granularity in hbitmap_serialization_granularity().
[Vladimir]
Tweak the assertion in serialization_chunk. [Vladimir]
cpu_to_leXXs -> leXX_to_cpus in hbitmap_deserialize_part.
[Vladimir]
Fix typo in serialization_chunk() comments. [John]
[12/13] block: BdrvDirtyBitmap serialization interface
[13/13] tests: Add test code for hbitmap serialization
Two major features are added to block dirty bitmap (and underlying HBitmap) in
this series: meta bitmap and serialization, together with all other supportive
patches.
Both operations are common in dirty bitmap migration and persistence: they need
to find whether and which part of the dirty bitmap in question has changed with
meta dirty bitmap, and they need to write it to the target with serialization.
Fam Zheng (11):
backup: Use Bitmap to replace "s->bitmap"
typedefs: Add BdrvDirtyBitmap
block: Move block dirty bitmap code to separate files
block: Remove unused typedef of BlockDriverDirtyHandler
block: Hide HBitmap in block dirty bitmap interface
HBitmap: Introduce "meta" bitmap to track bit changes
tests: Add test code for meta bitmap
block: Support meta dirty bitmap
block: Add two dirty bitmap getters
block: Assert that bdrv_release_dirty_bitmap succeeded
tests: Add test code for hbitmap serialization
Vladimir Sementsov-Ogievskiy (2):
hbitmap: serialization
block: BdrvDirtyBitmap serialization interface
block.c | 339 -----------------------------
block/Makefile.objs | 2 +-
block/backup.c | 25 ++-
block/dirty-bitmap.c | 492 +++++++++++++++++++++++++++++++++++++++++++
block/mirror.c | 14 +-
include/block/block.h | 40 +---
include/block/dirty-bitmap.h | 71 +++++++
include/qemu/hbitmap.h | 95 +++++++++
include/qemu/typedefs.h | 2 +
tests/test-hbitmap.c | 255 ++++++++++++++++++++++
util/hbitmap.c | 201 ++++++++++++++++--
11 files changed, 1126 insertions(+), 410 deletions(-)
create mode 100644 block/dirty-bitmap.c
create mode 100644 include/block/dirty-bitmap.h
--
Best regards,
Vladimir
* now, @virtuozzo.com instead of @parallels.com. Sorry for this inconvenience.