<html dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style id="owaParaStyle" type="text/css">P {margin-top:0;margin-bottom:0;}</style>
</head>
<body ocsi="0" fpstyle="1">
<div style="direction: ltr;font-family: Tahoma;color: #000000;font-size: 10pt;">Hello everybody,<br>
<br>
the modification of the xml-decription of an vm is disabled in libvirt for the combination of xen/libvirt.<br>
The following patches will enabled it.<br>
<br>
a possible use case is the restore of a vm , whose virtuell disk is on an LVM, and it should use for the restore a snapshot of this LVM
<br>
<br>
<br>
all the best<br>
guido<br>
<br>
---<br>
 src/libxl/libxl_domain.c | 14 +++++++++++---<br>
 src/libxl/libxl_domain.h |  3 ++-<br>
 src/libxl/libxl_driver.c |  9 +--------<br>
 3 files changed, 14 insertions(+), 12 deletions(-)<br>
<br>
diff --git a/src/libxl/libxl_domain.c b/src/libxl/libxl_domain.c<br>
index 0e26b91..98992a5 100644<br>
--- a/src/libxl/libxl_domain.c<br>
+++ b/src/libxl/libxl_domain.c<br>
@@ -630,7 +630,8 @@ libxlDomainSaveImageOpen(libxlDriverPrivatePtr driver,<br>
                          libxlDriverConfigPtr cfg,<br>
                          const char *from,<br>
                          virDomainDefPtr *ret_def,<br>
-                         libxlSavefileHeaderPtr ret_hdr)<br>
+                         libxlSavefileHeaderPtr ret_hdr,<br>
+                                                const char *xmlin )<br>
 {<br>
     int fd;<br>
     virDomainDefPtr def = NULL;<br>
@@ -675,10 +676,17 @@ libxlDomainSaveImageOpen(libxlDriverPrivatePtr driver,<br>
         goto error;<br>
     }<br>
 <br>
-    if (!(def = virDomainDefParseString(xml, cfg->caps, driver->xmlopt,<br>
+    if (xmlin != NULL) {<br>
+       if (!(def = virDomainDefParseString(xmlin, cfg->caps, driver->xmlopt,<br>
+                                               VIR_DOMAIN_DEF_PARSE_INACTIVE |<br>
+                                               VIR_DOMAIN_DEF_PARSE_SKIP_VALIDATE)))<br>
+               goto error;<br>
+    } else {<br>
+       if (!(def = virDomainDefParseString(xml, cfg->caps, driver->xmlopt,<br>
                                         VIR_DOMAIN_DEF_PARSE_INACTIVE |<br>
                                         VIR_DOMAIN_DEF_PARSE_SKIP_VALIDATE)))<br>
         goto error;<br>
+    }<br>
 <br>
     VIR_FREE(xml);<br>
 <br>
@@ -1072,7 +1080,7 @@ libxlDomainStart(libxlDriverPrivatePtr driver,<br>
 <br>
             managed_save_fd = libxlDomainSaveImageOpen(driver, cfg,<br>
                                                        managed_save_path,<br>
-                                                       &def, &hdr);<br>
+                                                       &def, &hdr, NULL);<br>
             if (managed_save_fd < 0)<br>
                 goto cleanup;<br>
 <br>
diff --git a/src/libxl/libxl_domain.h b/src/libxl/libxl_domain.h<br>
index af11a2c..863473d 100644<br>
--- a/src/libxl/libxl_domain.h<br>
+++ b/src/libxl/libxl_domain.h<br>
@@ -106,7 +106,8 @@ libxlDomainSaveImageOpen(libxlDriverPrivatePtr driver,<br>
                          libxlDriverConfigPtr cfg,<br>
                          const char *from,<br>
                          virDomainDefPtr *ret_def,<br>
-                         libxlSavefileHeaderPtr ret_hdr)<br>
+                         libxlSavefileHeaderPtr ret_hdr,<br>
+                                                const char *xmlin)<br>
     ATTRIBUTE_NONNULL(4) ATTRIBUTE_NONNULL(5);<br>
 <br>
 int<br>
diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c<br>
index cb501cf..4683fe7 100644<br>
--- a/src/libxl/libxl_driver.c<br>
+++ b/src/libxl/libxl_driver.c<br>
@@ -1828,14 +1828,7 @@ libxlDomainRestoreFlags(virConnectPtr conn, const char *from,<br>
     return -1;<br>
 #endif<br>
 <br>
-    virCheckFlags(VIR_DOMAIN_SAVE_PAUSED, -1);<br>
-    if (dxml) {<br>
-        virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED, "%s",<br>
-                       _("xml modification unsupported"));<br>
-        return -1;<br>
-    }<br>
-<br>
-    fd = libxlDomainSaveImageOpen(driver, cfg, from, &def, &hdr);<br>
+    fd = libxlDomainSaveImageOpen(driver, cfg, from, &def, &hdr, dxml);<br>
     if (fd < 0)<br>
         goto cleanup;<br>
 <br>
-- <br>
2.6.6<br>
<br>
</div>
<BR>
____________<BR>
Virus checked by G Data MailSecurity<BR>
Version: AVA 25.8250 dated 12.09.2016<BR>
Virus news: <a href="http://www.antiviruslab.com">www.antiviruslab.com</a><BR>
</body>
</html>