[libvirt] [RFC PATCH 04/10] qemu: monitor: add backup command

Nikolay Shirokovskiy nshirokovskiy at virtuozzo.com
Mon Nov 14 07:14:56 UTC 2016


---

This patch series do not use speed, bitmap and reuse arguments but we
definitely want to use them later. Speed and reuse have the same
meaning as in case of snapshots for example. Bitmap argument is
used for incremental backups. Thus as supporting these flags
is trivial delegation and arguments appear in many places let's
add them all right now to make code history cleaner.

 src/qemu/qemu_monitor.c      | 13 +++++++++++++
 src/qemu/qemu_monitor.h      |  5 +++++
 src/qemu/qemu_monitor_json.c | 34 ++++++++++++++++++++++++++++++++++
 src/qemu/qemu_monitor_json.h |  6 ++++++
 4 files changed, 58 insertions(+)

diff --git a/src/qemu/qemu_monitor.c b/src/qemu/qemu_monitor.c
index a5e14b2..f4f89d6 100644
--- a/src/qemu/qemu_monitor.c
+++ b/src/qemu/qemu_monitor.c
@@ -4033,3 +4033,16 @@ qemuMonitorGetRTCTime(qemuMonitorPtr mon,
 
     return qemuMonitorJSONGetRTCTime(mon, tm);
 }
+
+
+int qemuMonitorDriveBackup(virJSONValuePtr actions,
+                           const char *device, const char *target,
+                           const char *bitmap, const char *format,
+                           unsigned long long speed, bool reuse)
+{
+    VIR_DEBUG("actions=%p, device=%s, target=%s, bitmap=%s format=%s speed==%llu",
+              actions, device, target, bitmap, format, speed);
+
+    return qemuMonitorJSONDriveBackup(actions, device, target, bitmap, format,
+                                      speed, reuse);
+}
diff --git a/src/qemu/qemu_monitor.h b/src/qemu/qemu_monitor.h
index c3133c4..e6a33a8 100644
--- a/src/qemu/qemu_monitor.h
+++ b/src/qemu/qemu_monitor.h
@@ -1008,4 +1008,9 @@ int qemuMonitorMigrateStartPostCopy(qemuMonitorPtr mon);
 int qemuMonitorGetRTCTime(qemuMonitorPtr mon,
                           struct tm *tm);
 
+int qemuMonitorDriveBackup(virJSONValuePtr actions,
+                           const char *device, const char *target,
+                           const char *bitmap, const char *format,
+                           unsigned long long speed, bool reuse);
+
 #endif /* QEMU_MONITOR_H */
diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c
index 6c13832..475c7eb 100644
--- a/src/qemu/qemu_monitor_json.c
+++ b/src/qemu/qemu_monitor_json.c
@@ -7278,3 +7278,37 @@ qemuMonitorJSONGetHotpluggableCPUs(qemuMonitorPtr mon,
     virJSONValueFree(reply);
     return ret;
 }
+
+
+int
+qemuMonitorJSONDriveBackup(virJSONValuePtr actions,
+                           const char *device, const char *target,
+                           const char *bitmap, const char *format,
+                           unsigned long long speed, bool reuse)
+{
+    int ret = -1;
+    virJSONValuePtr cmd;
+
+    cmd = qemuMonitorJSONMakeCommandRaw(true,
+                                        "drive-backup",
+                                        "s:device", device,
+                                        "s:target", target,
+                                        "S:bitmap", bitmap,
+                                        "s:sync", bitmap ? "incremental" : "full",
+                                        "S:format", format,
+                                        "Y:speed", speed,
+                                        "S:mode", reuse ? "existing" : NULL,
+                                        NULL);
+    if (!cmd)
+        return -1;
+
+    if (virJSONValueArrayAppend(actions, cmd) < 0)
+        goto cleanup;
+
+    ret = 0;
+    cmd = NULL;
+
+ cleanup:
+    virJSONValueFree(cmd);
+    return ret;
+}
diff --git a/src/qemu/qemu_monitor_json.h b/src/qemu/qemu_monitor_json.h
index 77b2e02..784350d 100644
--- a/src/qemu/qemu_monitor_json.h
+++ b/src/qemu/qemu_monitor_json.h
@@ -500,4 +500,10 @@ int qemuMonitorJSONGetHotpluggableCPUs(qemuMonitorPtr mon,
                                        struct qemuMonitorQueryHotpluggableCpusEntry **entries,
                                        size_t *nentries)
     ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3);
+
+int qemuMonitorJSONDriveBackup(virJSONValuePtr actions,
+                               const char *device, const char *target,
+                               const char *bitmap, const char *format,
+                               unsigned long long speed, bool reuse)
+    ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3);
 #endif /* QEMU_MONITOR_JSON_H */
-- 
1.8.3.1




More information about the libvir-list mailing list