[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 09/11] qemu-img: Factor out code for merging bitmaps
From: |
Eric Blake |
Subject: |
[PULL 09/11] qemu-img: Factor out code for merging bitmaps |
Date: |
Tue, 26 May 2020 11:42:09 -0500 |
The next patch will add another client that wants to merge dirty
bitmaps; it will be easier to refactor the code to construct the QAPI
struct correctly into a helper function.
Signed-off-by: Eric Blake <address@hidden>
Message-Id: <address@hidden>
Reviewed-by: Vladimir Sementsov-Ogievskiy <address@hidden>
---
qemu-img.c | 34 +++++++++++++++++++++-------------
1 file changed, 21 insertions(+), 13 deletions(-)
diff --git a/qemu-img.c b/qemu-img.c
index b2311bd3f6b4..0778d8f56614 100644
--- a/qemu-img.c
+++ b/qemu-img.c
@@ -1638,6 +1638,24 @@ out4:
return ret;
}
+/* Convenience wrapper around qmp_block_dirty_bitmap_merge */
+static void do_dirty_bitmap_merge(const char *dst_node, const char *dst_name,
+ const char *src_node, const char *src_name,
+ Error **errp)
+{
+ BlockDirtyBitmapMergeSource *merge_src;
+ BlockDirtyBitmapMergeSourceList *list;
+
+ merge_src = g_new0(BlockDirtyBitmapMergeSource, 1);
+ merge_src->type = QTYPE_QDICT;
+ merge_src->u.external.node = g_strdup(src_node);
+ merge_src->u.external.name = g_strdup(src_name);
+ list = g_new0(BlockDirtyBitmapMergeSourceList, 1);
+ list->value = merge_src;
+ qmp_block_dirty_bitmap_merge(dst_node, dst_name, list, errp);
+ qapi_free_BlockDirtyBitmapMergeSourceList(list);
+}
+
enum ImgConvertBlockStatus {
BLK_DATA,
BLK_ZERO,
@@ -4714,21 +4732,11 @@ static int img_bitmap(int argc, char **argv)
qmp_block_dirty_bitmap_disable(bs->node_name, bitmap, &err);
op = "disable";
break;
- case BITMAP_MERGE: {
- BlockDirtyBitmapMergeSource *merge_src;
- BlockDirtyBitmapMergeSourceList *list;
-
- merge_src = g_new0(BlockDirtyBitmapMergeSource, 1);
- merge_src->type = QTYPE_QDICT;
- merge_src->u.external.node = g_strdup(src_bs->node_name);
- merge_src->u.external.name = g_strdup(act->src);
- list = g_new0(BlockDirtyBitmapMergeSourceList, 1);
- list->value = merge_src;
- qmp_block_dirty_bitmap_merge(bs->node_name, bitmap, list, &err);
- qapi_free_BlockDirtyBitmapMergeSourceList(list);
+ case BITMAP_MERGE:
+ do_dirty_bitmap_merge(bs->node_name, bitmap, src_bs->node_name,
+ act->src, &err);
op = "merge";
break;
- }
default:
g_assert_not_reached();
}
--
2.26.2
- [PULL 00/11] bitmaps patches for 2020-05-26, Eric Blake, 2020/05/26
- [PULL 01/11] migration: refactor init_dirty_bitmap_migration, Eric Blake, 2020/05/26
- [PULL 02/11] block/dirty-bitmap: add bdrv_has_named_bitmaps helper, Eric Blake, 2020/05/26
- [PULL 03/11] migration: fix bitmaps pre-blockdev migration with mirror job, Eric Blake, 2020/05/26
- [PULL 05/11] migration: add_bitmaps_to_list: check disk name once, Eric Blake, 2020/05/26
- [PULL 06/11] migration: forbid bitmap migration by generated node-name, Eric Blake, 2020/05/26
- [PULL 04/11] iotests: 194: test also migration of dirty bitmap, Eric Blake, 2020/05/26
- [PULL 08/11] qcow2: Expose bitmaps' size during measure, Eric Blake, 2020/05/26
- [PULL 07/11] iotests: Fix test 178, Eric Blake, 2020/05/26
- [PULL 09/11] qemu-img: Factor out code for merging bitmaps,
Eric Blake <=
- [PULL 10/11] qemu-img: Add convert --bitmaps option, Eric Blake, 2020/05/26
- [PULL 11/11] iotests: Add test 291 to for qemu-img bitmap coverage, Eric Blake, 2020/05/26
- Re: [PULL 00/11] bitmaps patches for 2020-05-26, Peter Maydell, 2020/05/27