[libvirt] [PATCH v9 04/10] backup: Implement backup APIs for remote driver

Eric Blake eblake at redhat.com
Mon Jul 8 16:55:47 UTC 2019


This one is fairly straightforward - the generator already does what
we need.

Signed-off-by: Eric Blake <eblake at redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange at redhat.com>
---
 src/remote/remote_driver.c   |  3 ++
 src/remote/remote_protocol.x | 53 +++++++++++++++++++++++++++++++++++-
 src/remote_protocol-structs  | 28 +++++++++++++++++++
 3 files changed, 83 insertions(+), 1 deletion(-)

diff --git a/src/remote/remote_driver.c b/src/remote/remote_driver.c
index 9145aa91ff..0c54caf31b 100644
--- a/src/remote/remote_driver.c
+++ b/src/remote/remote_driver.c
@@ -8597,6 +8597,9 @@ static virHypervisorDriver hypervisor_driver = {
     .domainCheckpointGetParent = remoteDomainCheckpointGetParent, /* 5.6.0 */
     .domainCheckpointDelete = remoteDomainCheckpointDelete, /* 5.6.0 */
     .domainCheckpointIsCurrent = remoteDomainCheckpointIsCurrent, /* 5.6.0 */
+    .domainBackupBegin = remoteDomainBackupBegin, /* 5.6.0 */
+    .domainBackupGetXMLDesc = remoteDomainBackupGetXMLDesc, /* 5.6.0 */
+    .domainBackupEnd = remoteDomainBackupEnd, /* 5.6.0 */
 };

 static virNetworkDriver network_driver = {
diff --git a/src/remote/remote_protocol.x b/src/remote/remote_protocol.x
index a2bd30360f..06f2b41a63 100644
--- a/src/remote/remote_protocol.x
+++ b/src/remote/remote_protocol.x
@@ -3732,6 +3732,37 @@ struct remote_domain_checkpoint_delete_args {
     unsigned int flags;
 };

+struct remote_domain_backup_begin_args {
+    remote_nonnull_domain dom;
+    remote_string disk_xml;
+    remote_string checkpoint_xml;
+    unsigned int flags;
+};
+
+struct remote_domain_backup_begin_ret {
+    int id;
+};
+
+struct remote_domain_backup_get_xml_desc_args {
+    remote_nonnull_domain dom;
+    int id;
+    unsigned int flags;
+};
+
+struct remote_domain_backup_get_xml_desc_ret {
+    remote_nonnull_string xml;
+};
+
+struct remote_domain_backup_end_args {
+    remote_nonnull_domain dom;
+    int id;
+    unsigned int flags;
+};
+
+struct remote_domain_backup_end_ret {
+    int retcode;
+};
+
 /*----- Protocol. -----*/

 /* Define the program number, protocol version and procedure numbers here. */
@@ -6595,10 +6626,30 @@ enum remote_procedure {
      */
     REMOTE_PROC_DOMAIN_CHECKPOINT_DELETE = 417,

+    /**
+     * @generate: both
+     * @acl: domain:checkpoint
+     */
+    REMOTE_PROC_DOMAIN_CHECKPOINT_IS_CURRENT = 418,
+
+    /**
+     * @generate: both
+     * @acl: domain:checkpoint
+     * @acl: domain:block_write
+     * @acl: domain:fs_freeze:VIR_DOMAIN_BACKUP_BEGIN_QUIESCE
+     */
+    REMOTE_PROC_DOMAIN_BACKUP_BEGIN = 419,
+
     /**
      * @generate: both
      * @priority: high
      * @acl: domain:read
      */
-    REMOTE_PROC_DOMAIN_CHECKPOINT_IS_CURRENT = 418
+    REMOTE_PROC_DOMAIN_BACKUP_GET_XML_DESC = 420,
+
+    /**
+     * @generate: both
+     * @acl: domain:checkpoint
+     */
+    REMOTE_PROC_DOMAIN_BACKUP_END = 421
 };
diff --git a/src/remote_protocol-structs b/src/remote_protocol-structs
index ba4337b1bd..535ed2c484 100644
--- a/src/remote_protocol-structs
+++ b/src/remote_protocol-structs
@@ -3112,6 +3112,31 @@ struct remote_domain_checkpoint_delete_args {
         remote_nonnull_domain_checkpoint checkpoint;
         u_int                      flags;
 };
+struct remote_domain_backup_begin_args {
+        remote_nonnull_domain      dom;
+        remote_string              disk_xml;
+        remote_string              checkpoint_xml;
+        u_int                      flags;
+};
+struct remote_domain_backup_begin_ret {
+        int                        id;
+};
+struct remote_domain_backup_get_xml_desc_args {
+        remote_nonnull_domain      dom;
+        int                        id;
+        u_int                      flags;
+};
+struct remote_domain_backup_get_xml_desc_ret {
+        remote_nonnull_string      xml;
+};
+struct remote_domain_backup_end_args {
+        remote_nonnull_domain      dom;
+        int                        id;
+        u_int                      flags;
+};
+struct remote_domain_backup_end_ret {
+        int                        retcode;
+};
 enum remote_procedure {
         REMOTE_PROC_CONNECT_OPEN = 1,
         REMOTE_PROC_CONNECT_CLOSE = 2,
@@ -3531,4 +3556,7 @@ enum remote_procedure {
         REMOTE_PROC_DOMAIN_CHECKPOINT_GET_PARENT = 416,
         REMOTE_PROC_DOMAIN_CHECKPOINT_DELETE = 417,
         REMOTE_PROC_DOMAIN_CHECKPOINT_IS_CURRENT = 418,
+        REMOTE_PROC_DOMAIN_BACKUP_BEGIN = 419,
+        REMOTE_PROC_DOMAIN_BACKUP_GET_XML_DESC = 420,
+        REMOTE_PROC_DOMAIN_BACKUP_END = 421,
 };
-- 
2.20.1




More information about the libvir-list mailing list