[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-block] [PULL 08/18] block: BdrvDirtyBitmap serialization interface
From: |
Max Reitz |
Subject: |
[Qemu-block] [PULL 08/18] block: BdrvDirtyBitmap serialization interface |
Date: |
Wed, 14 Sep 2016 18:40:52 +0200 |
From: Vladimir Sementsov-Ogievskiy <address@hidden>
Several functions to provide necessary access to BdrvDirtyBitmap for
block-migration.c
Signed-off-by: Vladimir Sementsov-Ogievskiy <address@hidden>
[Add the "finish" parameters. - Fam]
Signed-off-by: Fam Zheng <address@hidden>
Reviewed-by: John Snow <address@hidden>
Reviewed-by: Max Reitz <address@hidden>
Signed-off-by: John Snow <address@hidden>
Message-id: address@hidden
Signed-off-by: Max Reitz <address@hidden>
---
block/dirty-bitmap.c | 37 +++++++++++++++++++++++++++++++++++++
include/block/dirty-bitmap.h | 14 ++++++++++++++
2 files changed, 51 insertions(+)
diff --git a/block/dirty-bitmap.c b/block/dirty-bitmap.c
index 31d5296..384146b 100644
--- a/block/dirty-bitmap.c
+++ b/block/dirty-bitmap.c
@@ -453,6 +453,43 @@ void bdrv_undo_clear_dirty_bitmap(BdrvDirtyBitmap *bitmap,
HBitmap *in)
hbitmap_free(tmp);
}
+uint64_t bdrv_dirty_bitmap_serialization_size(const BdrvDirtyBitmap *bitmap,
+ uint64_t start, uint64_t count)
+{
+ return hbitmap_serialization_size(bitmap->bitmap, start, count);
+}
+
+uint64_t bdrv_dirty_bitmap_serialization_align(const BdrvDirtyBitmap *bitmap)
+{
+ return hbitmap_serialization_granularity(bitmap->bitmap);
+}
+
+void bdrv_dirty_bitmap_serialize_part(const BdrvDirtyBitmap *bitmap,
+ uint8_t *buf, uint64_t start,
+ uint64_t count)
+{
+ hbitmap_serialize_part(bitmap->bitmap, buf, start, count);
+}
+
+void bdrv_dirty_bitmap_deserialize_part(BdrvDirtyBitmap *bitmap,
+ uint8_t *buf, uint64_t start,
+ uint64_t count, bool finish)
+{
+ hbitmap_deserialize_part(bitmap->bitmap, buf, start, count, finish);
+}
+
+void bdrv_dirty_bitmap_deserialize_zeroes(BdrvDirtyBitmap *bitmap,
+ uint64_t start, uint64_t count,
+ bool finish)
+{
+ hbitmap_deserialize_zeroes(bitmap->bitmap, start, count, finish);
+}
+
+void bdrv_dirty_bitmap_deserialize_finish(BdrvDirtyBitmap *bitmap)
+{
+ hbitmap_deserialize_finish(bitmap->bitmap);
+}
+
void bdrv_set_dirty(BlockDriverState *bs, int64_t cur_sector,
int64_t nr_sectors)
{
diff --git a/include/block/dirty-bitmap.h b/include/block/dirty-bitmap.h
index c4e7858..efc2965 100644
--- a/include/block/dirty-bitmap.h
+++ b/include/block/dirty-bitmap.h
@@ -55,4 +55,18 @@ void bdrv_set_dirty_iter(BdrvDirtyBitmapIter *hbi, int64_t
sector_num);
int64_t bdrv_get_dirty_count(BdrvDirtyBitmap *bitmap);
void bdrv_dirty_bitmap_truncate(BlockDriverState *bs);
+uint64_t bdrv_dirty_bitmap_serialization_size(const BdrvDirtyBitmap *bitmap,
+ uint64_t start, uint64_t count);
+uint64_t bdrv_dirty_bitmap_serialization_align(const BdrvDirtyBitmap *bitmap);
+void bdrv_dirty_bitmap_serialize_part(const BdrvDirtyBitmap *bitmap,
+ uint8_t *buf, uint64_t start,
+ uint64_t count);
+void bdrv_dirty_bitmap_deserialize_part(BdrvDirtyBitmap *bitmap,
+ uint8_t *buf, uint64_t start,
+ uint64_t count, bool finish);
+void bdrv_dirty_bitmap_deserialize_zeroes(BdrvDirtyBitmap *bitmap,
+ uint64_t start, uint64_t count,
+ bool finish);
+void bdrv_dirty_bitmap_deserialize_finish(BdrvDirtyBitmap *bitmap);
+
#endif
--
2.5.5
- [Qemu-block] [PULL 00/18] Block layer patches, Max Reitz, 2016/09/14
- [Qemu-block] [PULL 01/18] block: Hide HBitmap in block dirty bitmap interface, Max Reitz, 2016/09/14
- [Qemu-block] [PULL 02/18] HBitmap: Introduce "meta" bitmap to track bit changes, Max Reitz, 2016/09/14
- [Qemu-block] [PULL 03/18] tests: Add test code for meta bitmap, Max Reitz, 2016/09/14
- [Qemu-block] [PULL 04/18] block: Support meta dirty bitmap, Max Reitz, 2016/09/14
- [Qemu-block] [PULL 05/18] block: Add two dirty bitmap getters, Max Reitz, 2016/09/14
- [Qemu-block] [PULL 06/18] block: Assert that bdrv_release_dirty_bitmap succeeded, Max Reitz, 2016/09/14
- [Qemu-block] [PULL 07/18] hbitmap: serialization, Max Reitz, 2016/09/14
- [Qemu-block] [PULL 08/18] block: BdrvDirtyBitmap serialization interface,
Max Reitz <=
- [Qemu-block] [PULL 10/18] block: More operations for meta dirty bitmap, Max Reitz, 2016/09/14
- [Qemu-block] [PULL 09/18] tests: Add test code for hbitmap serialization, Max Reitz, 2016/09/14
- [Qemu-block] [PULL 11/18] qemu-img: add the 'dd' subcommand, Max Reitz, 2016/09/14
- [Qemu-block] [PULL 12/18] qemu-img: add skip option to dd, Max Reitz, 2016/09/14
- [Qemu-block] [PULL 13/18] blockdev: prepare iSCSI block driver for dynamic loading, Max Reitz, 2016/09/14
- [Qemu-block] [PULL 14/18] blockdev: Add dynamic generation of module_block.h, Max Reitz, 2016/09/14
- [Qemu-block] [PULL 15/18] blockdev: Add dynamic module loading for block drivers, Max Reitz, 2016/09/14
- [Qemu-block] [PULL 16/18] blockdev: Modularize nfs block driver, Max Reitz, 2016/09/14
- [Qemu-block] [PULL 17/18] commit: get the overlay node before manipulating the backing chain, Max Reitz, 2016/09/14
- [Qemu-block] [PULL 18/18] iotest 055: refactor and speed up, Max Reitz, 2016/09/14