]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu: Explicitly pass backing store to qemuBuildStorageSourceChainAttachPrepareBlockd...
authorPeter Krempa <pkrempa@redhat.com>
Tue, 3 Sep 2019 12:22:41 +0000 (14:22 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Fri, 6 Sep 2019 06:12:21 +0000 (08:12 +0200)
In some cases we'll need to pass in a backing store which is not
recorded as the backing store of @src. Export backingStore as variable
and fix all callers to pass in the backing store. No semantic changes
for now.

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

index fa8bf39359b81d9876e318b4d5178e2d93e73965..9cd46e8ea7ef31195dbfac70a031d805837eff68 100644 (file)
@@ -10723,11 +10723,12 @@ qemuBuildStorageSourceChainAttachPrepareDrive(virDomainDiskDefPtr disk,
 static int
 qemuBuildStorageSourceChainAttachPrepareBlockdevOne(qemuBlockStorageSourceChainData *data,
                                                     virStorageSourcePtr src,
+                                                    virStorageSourcePtr backingStore,
                                                     virQEMUCapsPtr qemuCaps)
 {
     VIR_AUTOPTR(qemuBlockStorageSourceAttachData) elem = NULL;
 
-    if (!(elem = qemuBlockStorageSourceAttachPrepareBlockdev(src, src->backingStore, true)))
+    if (!(elem = qemuBlockStorageSourceAttachPrepareBlockdev(src, backingStore, true)))
         return -1;
 
     if (qemuBuildStorageSourceAttachPrepareCommon(src, elem, qemuCaps) < 0)
@@ -10759,7 +10760,9 @@ qemuBuildStorageSourceChainAttachPrepareBlockdev(virStorageSourcePtr top,
         return NULL;
 
     for (n = top; virStorageSourceIsBacking(n); n = n->backingStore) {
-        if (qemuBuildStorageSourceChainAttachPrepareBlockdevOne(data, n, qemuCaps) < 0)
+        if (qemuBuildStorageSourceChainAttachPrepareBlockdevOne(data, n,
+                                                                n->backingStore,
+                                                                qemuCaps) < 0)
             return NULL;
     }
 
@@ -10770,6 +10773,7 @@ qemuBuildStorageSourceChainAttachPrepareBlockdev(virStorageSourcePtr top,
 /**
  * qemuBuildStorageSourceChainAttachPrepareBlockdevTop:
  * @top: storage source chain
+ * @backingStore: a storage source to use as backing of @top
  * @qemuCaps: qemu capabilities object
  *
  * Prepares qemuBlockStorageSourceChainDataPtr for attaching of @top image only
@@ -10777,6 +10781,7 @@ qemuBuildStorageSourceChainAttachPrepareBlockdev(virStorageSourcePtr top,
  */
 qemuBlockStorageSourceChainDataPtr
 qemuBuildStorageSourceChainAttachPrepareBlockdevTop(virStorageSourcePtr top,
+                                                    virStorageSourcePtr backingStore,
                                                     virQEMUCapsPtr qemuCaps)
 {
     VIR_AUTOPTR(qemuBlockStorageSourceChainData) data = NULL;
@@ -10784,7 +10789,8 @@ qemuBuildStorageSourceChainAttachPrepareBlockdevTop(virStorageSourcePtr top,
     if (VIR_ALLOC(data) < 0)
         return NULL;
 
-    if (qemuBuildStorageSourceChainAttachPrepareBlockdevOne(data, top, qemuCaps) < 0)
+    if (qemuBuildStorageSourceChainAttachPrepareBlockdevOne(data, top, backingStore,
+                                                            qemuCaps) < 0)
         return NULL;
 
     VIR_RETURN_PTR(data);
index 6f97e7bc0c4bdb4039f6e72f3c9f63979152428a..60f9843b03710c134344d6ff778e61f182dd6fd6 100644 (file)
@@ -119,6 +119,7 @@ qemuBuildStorageSourceChainAttachPrepareBlockdev(virStorageSourcePtr top,
 
 qemuBlockStorageSourceChainDataPtr
 qemuBuildStorageSourceChainAttachPrepareBlockdevTop(virStorageSourcePtr top,
+                                                    virStorageSourcePtr backingStore,
                                                     virQEMUCapsPtr qemuCaps);
 
 char
index aa9efc684f38b5226f3978e7436dc9fc93d24930..39a0ee29b42d52914dfd3685a5c8f7ba27bcdb16 100644 (file)
@@ -18553,6 +18553,7 @@ qemuDomainBlockCopyCommon(virDomainObjPtr vm,
             }
 
             if (!(crdata = qemuBuildStorageSourceChainAttachPrepareBlockdevTop(mirror,
+                                                                               mirror->backingStore,
                                                                                priv->qemuCaps)))
                 goto endjob;
         }