]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: domain: Allow formatting top source only in qemuDomainObjPrivateXMLFormatBlockj...
authorPeter Krempa <pkrempa@redhat.com>
Thu, 25 Jul 2019 13:54:48 +0000 (15:54 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Fri, 16 Aug 2019 11:26:10 +0000 (13:26 +0200)
Rename qemuDomainObjPrivateXMLFormatBlockjobFormatChain to
qemuDomainObjPrivateXMLFormatBlockjobFormatSource and add a 'chain'
parameter which allows controlling whether the backing chain is
formatted.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/qemu/qemu_domain.c

index b9c5a4e541081fcab9bbea33c30f81e72044dba0..ddab76d3af916e8e541e5041be2dcab80e6054ca 100644 (file)
@@ -2315,10 +2315,11 @@ typedef struct qemuDomainPrivateBlockJobFormatData {
 
 
 static int
-qemuDomainObjPrivateXMLFormatBlockjobFormatChain(virBufferPtr buf,
-                                                 const char *chainname,
-                                                 virStorageSourcePtr src,
-                                                 virDomainXMLOptionPtr xmlopt)
+qemuDomainObjPrivateXMLFormatBlockjobFormatSource(virBufferPtr buf,
+                                                  const char *element,
+                                                  virStorageSourcePtr src,
+                                                  virDomainXMLOptionPtr xmlopt,
+                                                  bool chain)
 {
     VIR_AUTOCLEAN(virBuffer) attrBuf = VIR_BUFFER_INITIALIZER;
     VIR_AUTOCLEAN(virBuffer) childBuf = VIR_BUFFER_INITIALIZER;
@@ -2333,10 +2334,11 @@ qemuDomainObjPrivateXMLFormatBlockjobFormatChain(virBufferPtr buf,
     if (virDomainDiskSourceFormat(&childBuf, src, "source", 0, true, xmlflags, xmlopt) < 0)
         return -1;
 
-    if (virDomainDiskBackingStoreFormat(&childBuf, src, xmlopt, xmlflags) < 0)
+    if (chain &&
+        virDomainDiskBackingStoreFormat(&childBuf, src, xmlopt, xmlflags) < 0)
         return -1;
 
-    if (virXMLFormatElement(buf, chainname, &attrBuf, &childBuf) < 0)
+    if (virXMLFormatElement(buf, element, &attrBuf, &childBuf) < 0)
         return -1;
 
     return 0;
@@ -2375,17 +2377,19 @@ qemuDomainObjPrivateXMLFormatBlockjobIterator(void *payload,
         virBufferAddLit(&childBuf, "/>\n");
     } else {
         if (job->chain &&
-            qemuDomainObjPrivateXMLFormatBlockjobFormatChain(&chainsBuf,
-                                                             "disk",
-                                                             job->chain,
-                                                             data->xmlopt) < 0)
+            qemuDomainObjPrivateXMLFormatBlockjobFormatSource(&chainsBuf,
+                                                              "disk",
+                                                              job->chain,
+                                                              data->xmlopt,
+                                                              true) < 0)
             return -1;
 
         if (job->mirrorChain &&
-            qemuDomainObjPrivateXMLFormatBlockjobFormatChain(&chainsBuf,
-                                                             "mirror",
-                                                             job->mirrorChain,
-                                                             data->xmlopt) < 0)
+            qemuDomainObjPrivateXMLFormatBlockjobFormatSource(&chainsBuf,
+                                                              "mirror",
+                                                              job->mirrorChain,
+                                                              data->xmlopt,
+                                                              true) < 0)
             return -1;
 
         if (virXMLFormatElement(&childBuf, "chains", NULL, &chainsBuf) < 0)