[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 28/29] qcow2-bitmap: do not try reloading bitmaps
From: |
Vladimir Sementsov-Ogievskiy |
Subject: |
[Qemu-devel] [PATCH 28/29] qcow2-bitmap: do not try reloading bitmaps |
Date: |
Mon, 8 Aug 2016 18:05:19 +0300 |
Sometimes image is being reopened without removing bdrv state and
therefore bitmaps. So here we allow not loading qcow2 bitmap if it
already exists. It may lead to problem, if existing of such bitmap is a
mistake - this mistake would be skipped.
Signed-off-by: Vladimir Sementsov-Ogievskiy <address@hidden>
Signed-off-by: Denis V. Lunev <address@hidden>
---
block/qcow2-bitmap.c | 22 +++++++++++++++-------
1 file changed, 15 insertions(+), 7 deletions(-)
diff --git a/block/qcow2-bitmap.c b/block/qcow2-bitmap.c
index e94019c..def2005 100644
--- a/block/qcow2-bitmap.c
+++ b/block/qcow2-bitmap.c
@@ -642,15 +642,23 @@ static BdrvDirtyBitmap *load_bitmap(BlockDriverState *bs,
}
granularity = 1U << bmh->granularity_bits;
- bitmap = bdrv_create_dirty_bitmap(bs, granularity, name, errp);
+
+ bitmap = bdrv_find_dirty_bitmap(bs, name);
if (bitmap == NULL) {
- goto fail;
- }
+ bitmap = bdrv_create_dirty_bitmap(bs, granularity, name, errp);
+ if (bitmap == NULL) {
+ goto fail;
+ }
- ret = load_bitmap_data(bs, bitmap_table, bmh->bitmap_table_size,
- bitmap);
- if (ret < 0) {
- error_setg_errno(errp, -ret, "Could not read bitmap from image");
+ ret = load_bitmap_data(bs, bitmap_table, bmh->bitmap_table_size,
+ bitmap);
+ if (ret < 0) {
+ error_setg_errno(errp, -ret, "Could not read bitmap from image");
+ goto fail;
+ }
+ } else if (granularity != bdrv_dirty_bitmap_granularity(bitmap)) {
+ error_setg(errp, "Bitmap '%s' already exists with other granularity",
+ name);
goto fail;
}
--
1.8.3.1
- [Qemu-devel] [PATCH v6 00/29] qcow2: persistent dirty bitmaps, Vladimir Sementsov-Ogievskiy, 2016/08/08
- [Qemu-devel] [PATCH 17/29] qcow2-bitmap: add autoclear bit, Vladimir Sementsov-Ogievskiy, 2016/08/08
- [Qemu-devel] [PATCH 15/29] block/dirty-bitmap: introduce persistent bitmaps, Vladimir Sementsov-Ogievskiy, 2016/08/08
- [Qemu-devel] [PATCH 05/29] qcow2-bitmap: structs and consts, Vladimir Sementsov-Ogievskiy, 2016/08/08
- [Qemu-devel] [PATCH 25/29] qapi: add md5 checksum of last dirty bitmap level to query-block, Vladimir Sementsov-Ogievskiy, 2016/08/08
- [Qemu-devel] [PATCH 28/29] qcow2-bitmap: do not try reloading bitmaps,
Vladimir Sementsov-Ogievskiy <=
- [Qemu-devel] [PATCH 23/29] qmp: add autoload parameter to block-dirty-bitmap-add, Vladimir Sementsov-Ogievskiy, 2016/08/08
- [Qemu-devel] [PATCH 01/29] hbitmap: fix dirty iter, Vladimir Sementsov-Ogievskiy, 2016/08/08
- [Qemu-devel] [PATCH 10/29] qcow2-bitmap: add IN_USE flag, Vladimir Sementsov-Ogievskiy, 2016/08/08
- [Qemu-devel] [PATCH 16/29] block: add bdrv_load_dirty_bitmap(), Vladimir Sementsov-Ogievskiy, 2016/08/08
- [Qemu-devel] [PATCH 14/29] qcow2-bitmap: add qcow2_bitmap_load_check(), Vladimir Sementsov-Ogievskiy, 2016/08/08
- [Qemu-devel] [PATCH 04/29] block/dirty-bitmap: add deserialize_ones func, Vladimir Sementsov-Ogievskiy, 2016/08/08