From bac02e396d0394e422e472a2d194668e31dc00b2 Mon Sep 17 00:00:00 2001 From: Peter Krempa Date: Mon, 7 Oct 2019 16:19:34 +0200 Subject: [PATCH] qemu: monitor: Add helper for generating data for block bitmap merging MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Introduce qemuMonitorTransactionBitmapMergeSourceAddBitmap which adds the appropriate entry into a virJSONValue array to be used with qemuMonitorTransactionBitmapMerge. Bitmap merging supports two possible formats and this new helper implements the more universal one specifying also the source node name. In addition use the new helper in the testQemuMonitorJSONTransaction test. Signed-off-by: Peter Krempa Reviewed-by: Ján Tomko --- src/qemu/qemu_monitor.c | 9 +++++++++ src/qemu/qemu_monitor.h | 4 ++++ src/qemu/qemu_monitor_json.c | 21 +++++++++++++++++++++ src/qemu/qemu_monitor_json.h | 5 +++++ tests/qemumonitorjsontest.c | 4 ++-- 5 files changed, 41 insertions(+), 2 deletions(-) diff --git a/src/qemu/qemu_monitor.c b/src/qemu/qemu_monitor.c index db27b0e796..224d6a76c9 100644 --- a/src/qemu/qemu_monitor.c +++ b/src/qemu/qemu_monitor.c @@ -4598,6 +4598,15 @@ qemuMonitorTransactionBitmapMerge(virJSONValuePtr actions, } +int +qemuMonitorTransactionBitmapMergeSourceAddBitmap(virJSONValuePtr sources, + const char *sourcenode, + const char *sourcebitmap) +{ + return qemuMonitorJSONTransactionBitmapMergeSourceAddBitmap(sources, sourcenode, sourcebitmap); +} + + int qemuMonitorTransactionSnapshotLegacy(virJSONValuePtr actions, const char *device, diff --git a/src/qemu/qemu_monitor.h b/src/qemu/qemu_monitor.h index 36eb5f342d..c4b7196794 100644 --- a/src/qemu/qemu_monitor.h +++ b/src/qemu/qemu_monitor.h @@ -1383,6 +1383,10 @@ qemuMonitorTransactionBitmapMerge(virJSONValuePtr actions, const char *node, const char *target, virJSONValuePtr *sources); +int +qemuMonitorTransactionBitmapMergeSourceAddBitmap(virJSONValuePtr sources, + const char *sourcenode, + const char *sourcebitmap); int qemuMonitorTransactionSnapshotLegacy(virJSONValuePtr actions, diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c index 4bdc4d5569..b63bdadd25 100644 --- a/src/qemu/qemu_monitor_json.c +++ b/src/qemu/qemu_monitor_json.c @@ -9281,6 +9281,27 @@ qemuMonitorJSONTransactionBitmapMerge(virJSONValuePtr actions, } +int +qemuMonitorJSONTransactionBitmapMergeSourceAddBitmap(virJSONValuePtr sources, + const char *sourcenode, + const char *sourcebitmap) +{ + g_autoptr(virJSONValue) sourceobj = NULL; + + if (virJSONValueObjectCreate(&sourceobj, + "s:node", sourcenode, + "s:name", sourcebitmap, + NULL) < 0) + return -1; + + if (virJSONValueArrayAppend(sources, sourceobj) < 0) + return -1; + + sourceobj = NULL; + return 0; +} + + int qemuMonitorJSONTransactionSnapshotLegacy(virJSONValuePtr actions, const char *device, diff --git a/src/qemu/qemu_monitor_json.h b/src/qemu/qemu_monitor_json.h index 6ee3e912f9..e85a606792 100644 --- a/src/qemu/qemu_monitor_json.h +++ b/src/qemu/qemu_monitor_json.h @@ -669,6 +669,11 @@ qemuMonitorJSONTransactionBitmapMerge(virJSONValuePtr actions, const char *target, virJSONValuePtr *sources); +int +qemuMonitorJSONTransactionBitmapMergeSourceAddBitmap(virJSONValuePtr sources, + const char *sourcenode, + const char *sourcebitmap); + int qemuMonitorJSONTransactionSnapshotLegacy(virJSONValuePtr actions, const char *device, diff --git a/tests/qemumonitorjsontest.c b/tests/qemumonitorjsontest.c index c0eee921cf..31cd6f88d7 100644 --- a/tests/qemumonitorjsontest.c +++ b/tests/qemumonitorjsontest.c @@ -3018,8 +3018,8 @@ testQemuMonitorJSONTransaction(const void *opaque) !(mergebitmaps = virJSONValueNewArray())) return -1; - if (virJSONValueArrayAppendString(mergebitmaps, "mergemap1") < 0 || - virJSONValueArrayAppendString(mergebitmaps, "mergemap2") < 0) + if (qemuMonitorTransactionBitmapMergeSourceAddBitmap(mergebitmaps, "node1", "bitmap1") < 0 || + qemuMonitorTransactionBitmapMergeSourceAddBitmap(mergebitmaps, "node2", "bitmap2") < 0) return -1; if (qemuMonitorTransactionBitmapAdd(actions, "node1", "bitmap1", true, true) < 0 || -- 2.47.2