[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-block] [PATCH 28/29] qcow2-bitmap: do not try reloading bitmaps
From: |
Vladimir Sementsov-Ogievskiy |
Subject: |
[Qemu-block] [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-block] [PATCH v6 00/29] qcow2: persistent dirty bitmaps, Vladimir Sementsov-Ogievskiy, 2016/08/08
- [Qemu-block] [PATCH 28/29] qcow2-bitmap: do not try reloading bitmaps,
Vladimir Sementsov-Ogievskiy <=
- [Qemu-block] [PATCH 07/29] qcow2-bitmap: add qcow2_bitmap_load(), Vladimir Sementsov-Ogievskiy, 2016/08/08
- [Qemu-block] [PATCH 26/29] iotests: test qcow2 persistent dirty bitmap, Vladimir Sementsov-Ogievskiy, 2016/08/08
- [Qemu-block] [PATCH 21/29] qcow2-bitmap: add EXTRA_DATA_COMPATIBLE flag, Vladimir Sementsov-Ogievskiy, 2016/08/08
- [Qemu-block] [PATCH 13/29] qcow2: add dirty bitmaps extension, Vladimir Sementsov-Ogievskiy, 2016/08/08
- [Qemu-block] [PATCH 27/29] qcow2-bitmap: delete in_use bitmaps on image load, Vladimir Sementsov-Ogievskiy, 2016/08/08
- [Qemu-block] [PATCH 22/29] qmp: add persistent flag to block-dirty-bitmap-add, Vladimir Sementsov-Ogievskiy, 2016/08/08
- [Qemu-block] [PATCH 24/29] qcow2-bitmap: maintian BlockDirtyBitmap.autoload, Vladimir Sementsov-Ogievskiy, 2016/08/08
- [Qemu-block] [PATCH 01/29] hbitmap: fix dirty iter, Vladimir Sementsov-Ogievskiy, 2016/08/08