[libvirt] [PATCH 2/5] qemu: save image: Add possibility to return XML stored in the image

Peter Krempa pkrempa at redhat.com
Wed Sep 17 15:18:36 UTC 2014


Add a new parameter that will allow to return the XML stored in the save
image for further manipulation and adjust the callers. This option will
be used in later patches.
---
 src/qemu/qemu_driver.c | 18 +++++++++++-------
 1 file changed, 11 insertions(+), 7 deletions(-)

diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index e41a08e..a276ea5 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -5382,6 +5382,7 @@ qemuDomainSaveImageOpen(virQEMUDriverPtr driver,
                         const char *path,
                         virDomainDefPtr *ret_def,
                         virQEMUSaveHeaderPtr ret_header,
+                        char **xmlout,
                         bool bypass_cache,
                         virFileWrapperFdPtr *wrapperFd,
                         const char *xmlin, int state, bool edit,
@@ -5504,7 +5505,10 @@ qemuDomainSaveImageOpen(virQEMUDriverPtr driver,
         def = tmp;
     }

-    VIR_FREE(xml);
+    if (xmlout)
+        *xmlout = xml;
+    else
+        VIR_FREE(xml);

     *ret_def = def;
     *ret_header = header;
@@ -5660,7 +5664,7 @@ qemuDomainRestoreFlags(virConnectPtr conn,
     else if (flags & VIR_DOMAIN_SAVE_PAUSED)
         state = 0;

-    fd = qemuDomainSaveImageOpen(driver, path, &def, &header,
+    fd = qemuDomainSaveImageOpen(driver, path, &def, &header, NULL,
                                  (flags & VIR_DOMAIN_SAVE_BYPASS_CACHE) != 0,
                                  &wrapperFd, dxml, state, false, false);
     if (fd < 0)
@@ -5721,8 +5725,8 @@ qemuDomainSaveImageGetXMLDesc(virConnectPtr conn, const char *path,
     /* We only take subset of virDomainDefFormat flags.  */
     virCheckFlags(VIR_DOMAIN_XML_SECURE, NULL);

-    fd = qemuDomainSaveImageOpen(driver, path, &def, &header, false, NULL,
-                                 NULL, -1, false, false);
+    fd = qemuDomainSaveImageOpen(driver, path, &def, &header, NULL,
+                                 false, NULL, NULL, -1, false, false);

     if (fd < 0)
         goto cleanup;
@@ -5759,8 +5763,8 @@ qemuDomainSaveImageDefineXML(virConnectPtr conn, const char *path,
     else if (flags & VIR_DOMAIN_SAVE_PAUSED)
         state = 0;

-    fd = qemuDomainSaveImageOpen(driver, path, &def, &header, false, NULL,
-                                 dxml, state, true, false);
+    fd = qemuDomainSaveImageOpen(driver, path, &def, &header, NULL,
+                                 false, NULL, dxml, state, true, false);

     if (fd < 0) {
         /* Check for special case of no change needed.  */
@@ -5824,7 +5828,7 @@ qemuDomainObjRestore(virConnectPtr conn,
     virQEMUSaveHeader header;
     virFileWrapperFdPtr wrapperFd = NULL;

-    fd = qemuDomainSaveImageOpen(driver, path, &def, &header,
+    fd = qemuDomainSaveImageOpen(driver, path, &def, &header, NULL,
                                  bypass_cache, &wrapperFd, NULL, -1, false,
                                  true);
     if (fd < 0) {
-- 
2.1.0




More information about the libvir-list mailing list