[libvirt] [PATCH v2 4/9] virstoragefile: Always use virStorageSourceSetBackingStore to set backing store

Matthias Gatto matthias.gatto at outscale.com
Wed Jan 21 15:29:51 UTC 2015


Replace the parts of the code where a backing store is set manually
with virStorageSourceSetBackingStore

Signed-off-by: Matthias Gatto <matthias.gatto at outscale.com>
---
 src/conf/domain_conf.c           | 2 +-
 src/conf/storage_conf.c          | 4 ++--
 src/qemu/qemu_driver.c           | 4 ++--
 src/storage/storage_backend_fs.c | 8 ++++----
 src/storage/storage_driver.c     | 2 +-
 src/util/virstoragefile.c        | 8 +++++---
 tests/virstoragetest.c           | 4 ++--
 7 files changed, 17 insertions(+), 15 deletions(-)

diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 0668a5b..9d6b888 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -5659,7 +5659,7 @@ virDomainDiskBackingStoreParse(xmlXPathContextPtr ctxt,
         virDomainDiskBackingStoreParse(ctxt, backingStore) < 0)
         goto cleanup;
 
-    src->backingStore = backingStore;
+    virStorageSourceSetBackingStore(src, backingStore, 0);
     ret = 0;
 
  cleanup:
diff --git a/src/conf/storage_conf.c b/src/conf/storage_conf.c
index f4f7e24..fac85fa 100644
--- a/src/conf/storage_conf.c
+++ b/src/conf/storage_conf.c
@@ -1340,10 +1340,10 @@ virStorageVolDefParseXML(virStoragePoolDefPtr pool,
 
     if ((backingStore = virXPathString("string(./backingStore/path)", ctxt))) {
         virStorageSourcePtr backingStorePtr;
-        if (VIR_ALLOC(ret->target.backingStore) < 0)
+        if (VIR_ALLOC(backingStorePtr) < 0)
             goto error;
 
-        backingStorePtr = virStorageSourceGetBackingStore(&ret->target, 0);
+        backingStorePtr = virStorageSourceSetBackingStore(&ret->target, backingStorePtr, 0);
         backingStorePtr->path = backingStore;
         backingStore = NULL;
 
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index 547d2b5..b3afccd 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -13500,13 +13500,13 @@ qemuDomainSnapshotUndoSingleDiskActive(virQEMUDriverPtr driver,
     /* Update vm in place to match changes. */
     tmp = disk->src;
     disk->src = virStorageSourceGetBackingStore(tmp, 0);
-    tmp->backingStore = NULL;
+    virStorageSourceSetBackingStore(tmp, NULL, 0);
     virStorageSourceFree(tmp);
 
     if (persistDisk) {
         tmp = persistDisk->src;
         persistDisk->src = virStorageSourceGetBackingStore(tmp, 0);
-        tmp->backingStore = NULL;
+        virStorageSourceSetBackingStore(tmp, NULL, 0);
         virStorageSourceFree(tmp);
     }
 }
diff --git a/src/storage/storage_backend_fs.c b/src/storage/storage_backend_fs.c
index 56cfc56..a3b6688 100644
--- a/src/storage/storage_backend_fs.c
+++ b/src/storage/storage_backend_fs.c
@@ -97,8 +97,9 @@ virStorageBackendProbeTarget(virStorageSourcePtr target,
         goto cleanup;
 
     if (meta->backingStoreRaw) {
-        backingStore = virStorageSourceGetBackingStore(target, 0);
-        if (!(backingStore = virStorageSourceNewFromBacking(meta)))
+        if (!(backingStore = virStorageSourceSetBackingStore(target,
+                                                             virStorageSourceNewFromBacking(meta),
+                                                             0)))
             goto cleanup;
 
         backingStore->format = backingStoreFormat;
@@ -111,8 +112,7 @@ virStorageBackendProbeTarget(virStorageSourcePtr target,
 
             if (VIR_ALLOC(backingStore) < 0)
                 goto cleanup;
-
-            target->backingStore = backingStore;
+            virStorageSourceSetBackingStore(target, backingStore, 0);
             backingStore->type = VIR_STORAGE_TYPE_NETWORK;
             backingStore->path = meta->backingStoreRaw;
             meta->backingStoreRaw = NULL;
diff --git a/src/storage/storage_driver.c b/src/storage/storage_driver.c
index 66dc994..eeb2a4c 100644
--- a/src/storage/storage_driver.c
+++ b/src/storage/storage_driver.c
@@ -2899,7 +2899,7 @@ virStorageFileGetMetadataRecurse(virStorageSourcePtr src,
         goto cleanup;
     }
 
-    src->backingStore = backingStore;
+    virStorageSourceSetBackingStore(src, backingStore, 0);
     backingStore = NULL;
     ret = 0;
 
diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c
index 84eefa3..ba38827 100644
--- a/src/util/virstoragefile.c
+++ b/src/util/virstoragefile.c
@@ -1891,8 +1891,10 @@ virStorageSourceCopy(const virStorageSource *src,
         goto error;
 
     if (backingChain && virStorageSourceGetBackingStore(src, 0)) {
-        if (!(ret->backingStore = virStorageSourceCopy(virStorageSourceGetBackingStore(src, 0),
-                                                       true)))
+        if (!virStorageSourceSetBackingStore(ret,
+                                             virStorageSourceCopy(virStorageSourceGetBackingStore(src, 0),
+                                                                  true),
+                                             0))
             goto error;
     }
 
@@ -2029,7 +2031,7 @@ virStorageSourceBackingStoreClear(virStorageSourcePtr def)
 
     /* recursively free backing chain */
     virStorageSourceFree(virStorageSourceGetBackingStore(def, 0));
-    def->backingStore = NULL;
+    virStorageSourceSetBackingStore(def, NULL, 0);
 }
 
 
diff --git a/tests/virstoragetest.c b/tests/virstoragetest.c
index 12670da..b7820d4 100644
--- a/tests/virstoragetest.c
+++ b/tests/virstoragetest.c
@@ -583,9 +583,9 @@ testPathRelativePrepare(void)
 
     for (i = 0; i < ARRAY_CARDINALITY(backingchain); i++) {
         if (i < ARRAY_CARDINALITY(backingchain) - 1)
-            backingchain[i].backingStore = &backingchain[i + 1];
+            virStorageSourceSetBackingStore(&backingchain[i], &backingchain[i + 1], 0);
         else
-            backingchain[i].backingStore = NULL;
+            virStorageSourceSetBackingStore(&backingchain[i], NULL, 0);
 
         backingchain[i].relPath = NULL;
     }
-- 
1.8.3.1




More information about the libvir-list mailing list