qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH 11/17] block: add bdrv_load_dirty_bitmap()


From: Vladimir Sementsov-Ogievskiy
Subject: [Qemu-devel] [PATCH 11/17] block: add bdrv_load_dirty_bitmap()
Date: Sat, 5 Sep 2015 19:43:53 +0300

The funcion loads dirty bitmap from file, using underlying driver
function.

Note: the function doesn't change BdrvDirtyBitmap.file field. This field
is only used by bdrv_store_dirty_bitmap() function and is ONLY written
by bdrv_dirty_bitmap_set_file() function.

Signed-off-by: Vladimir Sementsov-Ogievskiy <address@hidden>
---
 block.c               | 18 ++++++++++++++++++
 include/block/block.h |  4 ++++
 2 files changed, 22 insertions(+)

diff --git a/block.c b/block.c
index 492abb4..9148977 100644
--- a/block.c
+++ b/block.c
@@ -3374,6 +3374,24 @@ bool bdrv_load_check_dirty_bitmap(BlockDriverState 
*file, const char *name)
     return false;
 }
 
+BdrvDirtyBitmap *bdrv_load_dirty_bitmap(BlockDriverState *bs_for,
+                                        BlockDriverState *bs_file,
+                                        const char *name,
+                                        Error **errp)
+{
+    BlockDriver *drv = bs_file->drv;
+    if (!drv) {
+        return NULL;
+    }
+    if (drv->bdrv_dirty_bitmap_load) {
+        return drv->bdrv_dirty_bitmap_load(bs_for, bs_file, name, errp);
+    }
+    if (bs_file->file)  {
+        return bdrv_load_dirty_bitmap(bs_for, bs_file->file, name, errp);
+    }
+    return NULL;
+}
+
 int bdrv_store_dirty_bitmap(BdrvDirtyBitmap *bitmap)
 {
     BlockDriverState *bs = bitmap->file;
diff --git a/include/block/block.h b/include/block/block.h
index 4b9b898..f587a03 100644
--- a/include/block/block.h
+++ b/include/block/block.h
@@ -534,6 +534,10 @@ HBitmap *bdrv_create_meta_bitmap(BdrvDirtyBitmap *bitmap,
 void bdrv_release_meta_bitmap(BdrvDirtyBitmap *bitmap);
 
 bool bdrv_load_check_dirty_bitmap(BlockDriverState *file, const char *name);
+BdrvDirtyBitmap *bdrv_load_dirty_bitmap(BlockDriverState *bs_for,
+                                        BlockDriverState *bs_file,
+                                        const char *name,
+                                        Error **errp);
 int bdrv_store_dirty_bitmap(BdrvDirtyBitmap *bitmap);
 
 void bdrv_enable_copy_on_read(BlockDriverState *bs);
-- 
2.1.4




reply via email to

[Prev in Thread] Current Thread [Next in Thread]