]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu: monitor: Add helper for generating data for block bitmap merging
authorPeter Krempa <pkrempa@redhat.com>
Mon, 7 Oct 2019 14:19:34 +0000 (16:19 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Thu, 24 Oct 2019 17:35:34 +0000 (19:35 +0200)
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 <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/qemu/qemu_monitor.c
src/qemu/qemu_monitor.h
src/qemu/qemu_monitor_json.c
src/qemu/qemu_monitor_json.h
tests/qemumonitorjsontest.c

index db27b0e79625cf442a8a2c56aafa5340ba333d1c..224d6a76c9b53fb81c929d83ff928e6b2e6e4f97 100644 (file)
@@ -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,
index 36eb5f342d3c8e37fd6becc427d002329e43bdda..c4b7196794637f9beca9d8ad68051837eb027aa9 100644 (file)
@@ -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,
index 4bdc4d5569b5cf3aa64f6e66135ab497d91bf46e..b63bdadd2558bdad9323dddcda7e87082ebebde4 100644 (file)
@@ -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,
index 6ee3e912f95051c5097becc8997afd75e172f524..e85a60679277dc0fa3619683148ea7df751530cb 100644 (file)
@@ -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,
index c0eee921cf278d484c29f269b133720b342c3180..31cd6f88d78fd5e9d0c92f8961496eca9ffde97c 100644 (file)
@@ -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 ||