Rather than generating the transaction contents in random places add a
unified set of APIs to generate the contents for a 'transaction' for the
dirty bitmap APIs.
Signed-off-by: Peter Krempa <pkrempa(a)redhat.com>
---
src/qemu/qemu_monitor.c | 48 ++++++++++++++++++++++++
src/qemu/qemu_monitor.h | 24 ++++++++++++
src/qemu/qemu_monitor_json.c | 71 ++++++++++++++++++++++++++++++++++++
src/qemu/qemu_monitor_json.h | 24 ++++++++++++
4 files changed, 167 insertions(+)
diff --git a/src/qemu/qemu_monitor.c b/src/qemu/qemu_monitor.c
index b6d2936872..b1499503d4 100644
--- a/src/qemu/qemu_monitor.c
+++ b/src/qemu/qemu_monitor.c
@@ -4491,3 +4491,51 @@ qemuMonitorGetJobInfo(qemuMonitorPtr mon,
return qemuMonitorJSONGetJobInfo(mon, jobs, njobs);
}
+
+
+int
+qemuMonitorTransactionBitmapAdd(virJSONValuePtr actions,
+ const char *node,
+ const char *name,
+ bool persistent,
+ bool disabled)
+{
+ return qemuMonitorJSONTransactionBitmapAdd(actions, node, name, persistent,
disabled);
+}
+
+
+int
+qemuMonitorTransactionBitmapRemove(virJSONValuePtr actions,
+ const char *node,
+ const char *name)
+{
+ return qemuMonitorJSONTransactionBitmapRemove(actions, node, name);
+}
+
+
+int
+qemuMonitorTransactionBitmapEnable(virJSONValuePtr actions,
+ const char *node,
+ const char *name)
+{
+ return qemuMonitorJSONTransactionBitmapEnable(actions, node, name);
+}
+
+
+int
+qemuMonitorTransactionBitmapDisable(virJSONValuePtr actions,
+ const char *node,
+ const char *name)
+{
+ return qemuMonitorJSONTransactionBitmapDisable(actions, node, name);
+}
+
+
+int
+qemuMonitorTransactionBitmapMerge(virJSONValuePtr actions,
+ const char *node,
+ const char *target,
+ virJSONValuePtr *sources)
+{
+ return qemuMonitorJSONTransactionBitmapMerge(actions, node, target, sources);
+}
diff --git a/src/qemu/qemu_monitor.h b/src/qemu/qemu_monitor.h
index 8fc11c955e..4f449f3515 100644
--- a/src/qemu/qemu_monitor.h
+++ b/src/qemu/qemu_monitor.h
@@ -1337,3 +1337,27 @@ VIR_DEFINE_AUTOPTR_FUNC(qemuMonitorJobInfo,
qemuMonitorJobInfoFree);
int qemuMonitorGetJobInfo(qemuMonitorPtr mon,
qemuMonitorJobInfoPtr **jobs,
size_t *njobs);
+
+int
+qemuMonitorTransactionBitmapAdd(virJSONValuePtr actions,
+ const char *node,
+ const char *name,
+ bool persistent,
+ bool disabled);
+int
+qemuMonitorTransactionBitmapRemove(virJSONValuePtr actions,
+ const char *node,
+ const char *name);
+int
+qemuMonitorTransactionBitmapEnable(virJSONValuePtr actions,
+ const char *node,
+ const char *name);
+int
+qemuMonitorTransactionBitmapDisable(virJSONValuePtr actions,
+ const char *node,
+ const char *name);
+int
+qemuMonitorTransactionBitmapMerge(virJSONValuePtr actions,
+ const char *node,
+ const char *target,
+ virJSONValuePtr *sources);
diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c
index cdfaf9785a..b1f29e4870 100644
--- a/src/qemu/qemu_monitor_json.c
+++ b/src/qemu/qemu_monitor_json.c
@@ -9029,6 +9029,77 @@ qemuMonitorJSONDeleteBitmap(qemuMonitorPtr mon,
}
+int
+qemuMonitorJSONTransactionBitmapAdd(virJSONValuePtr actions,
+ const char *node,
+ const char *name,
+ bool persistent,
+ bool disabled)
+{
+ return qemuMonitorJSONTransactionAdd(actions,
+ "block-dirty-bitmap-add",
+ "s:node", node,
+ "s:name", name,
+ "b:persistent", persistent,
+ "b:disabled", disabled,
+ NULL);
+}
+
+
+int
+qemuMonitorJSONTransactionBitmapRemove(virJSONValuePtr actions,
+ const char *node,
+ const char *name)
+{
+ return qemuMonitorJSONTransactionAdd(actions,
+ "block-dirty-bitmap-remove",
+ "s:node", node,
+ "s:name", name,
+ NULL);
+}
+
+
+int
+qemuMonitorJSONTransactionBitmapEnable(virJSONValuePtr actions,
+ const char *node,
+ const char *name)
+{
+ return qemuMonitorJSONTransactionAdd(actions,
+ "block-dirty-bitmap-enable",
+ "s:node", node,
+ "s:name", name,
+ NULL);
+}
+
+
+int
+qemuMonitorJSONTransactionBitmapDisable(virJSONValuePtr actions,
+ const char *node,
+ const char *name)
+{
+ return qemuMonitorJSONTransactionAdd(actions,
+ "block-dirty-bitmap-disable",
+ "s:node", node,
+ "s:name", name,
+ NULL);
+}
+
+
+int
+qemuMonitorJSONTransactionBitmapMerge(virJSONValuePtr actions,
+ const char *node,
+ const char *target,
+ virJSONValuePtr *sources)
+{
+ return qemuMonitorJSONTransactionAdd(actions,
+ "block-dirty-bitmap-merge",
+ "s:node", node,
+ "s:target", target,
+ "a:bitmaps", sources,
+ NULL);
+}
+
+
static qemuMonitorJobInfoPtr
qemuMonitorJSONGetJobInfoOne(virJSONValuePtr data)
{
diff --git a/src/qemu/qemu_monitor_json.h b/src/qemu/qemu_monitor_json.h
index a608410703..d5408107be 100644
--- a/src/qemu/qemu_monitor_json.h
+++ b/src/qemu/qemu_monitor_json.h
@@ -632,3 +632,27 @@ int qemuMonitorJSONMergeBitmaps(qemuMonitorPtr mon,
int qemuMonitorJSONDeleteBitmap(qemuMonitorPtr mon,
const char *node,
const char *bitmap);
+
+int
+qemuMonitorJSONTransactionBitmapAdd(virJSONValuePtr actions,
+ const char *node,
+ const char *name,
+ bool persistent,
+ bool disabled);
+int
+qemuMonitorJSONTransactionBitmapRemove(virJSONValuePtr actions,
+ const char *node,
+ const char *name);
+int
+qemuMonitorJSONTransactionBitmapEnable(virJSONValuePtr actions,
+ const char *node,
+ const char *name);
+int
+qemuMonitorJSONTransactionBitmapDisable(virJSONValuePtr actions,
+ const char *node,
+ const char *name);
+int
+qemuMonitorJSONTransactionBitmapMerge(virJSONValuePtr actions,
+ const char *node,
+ const char *target,
+ virJSONValuePtr *sources);
--
2.21.0