]> xenbits.xensource.com Git - people/liuw/libxenctrl-split/libvirt.git/commitdiff
util: virstoragefile: Don't use "backingStore" directly
authorPeter Krempa <pkrempa@redhat.com>
Thu, 17 Apr 2014 12:09:58 +0000 (14:09 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Wed, 23 Apr 2014 21:11:06 +0000 (23:11 +0200)
As a temporary step to allow killing of the "backingStore" field of
struct virStorageFileMetadata the recursive metadata retrieval function
will be converted not to use the field in the lookup process.

src/util/virstoragefile.c

index 9ea3e4ff2d3a497a59cd59f39e62b954e129b441..bde3ab044fa57b324c7a67c2eed316a063caab32 100644 (file)
@@ -1122,6 +1122,7 @@ virStorageFileGetMetadataRecurse(const char *path, const char *canonPath,
     int fd;
     int ret = -1;
     int backingFormat;
+    char *backingPath = NULL;
     char *backingDirectory = NULL;
 
     VIR_DEBUG("path=%s canonPath=%s dir=%s format=%d uid=%d gid=%d probe=%d",
@@ -1175,7 +1176,7 @@ virStorageFileGetMetadataRecurse(const char *path, const char *canonPath,
             if (virFindBackingFile(directory,
                                    meta->backingStoreRaw,
                                    &backingDirectory,
-                                   &meta->backingStore) < 0) {
+                                   &backingPath) < 0) {
                 /* the backing file is (currently) unavailable, treat this
                  * file as standalone:
                  * backingStoreRaw is kept to mark broken image chains */
@@ -1185,17 +1186,20 @@ virStorageFileGetMetadataRecurse(const char *path, const char *canonPath,
                 return 0;
             }
         } else {
-            if (VIR_STRDUP(meta->backingStore, meta->backingStoreRaw) < 0)
+            if (VIR_STRDUP(backingPath, meta->backingStoreRaw) < 0)
                 return -1;
         }
 
+        if (VIR_STRDUP(meta->backingStore, backingPath) < 0)
+            return -1;
+
         if (backingFormat == VIR_STORAGE_FILE_AUTO && !allow_probe)
             backingFormat = VIR_STORAGE_FILE_RAW;
         else if (backingFormat == VIR_STORAGE_FILE_AUTO_SAFE)
             backingFormat = VIR_STORAGE_FILE_AUTO;
         if (VIR_ALLOC(backing) < 0 ||
             virStorageFileGetMetadataRecurse(meta->backingStoreRaw,
-                                             meta->backingStore,
+                                             backingPath,
                                              backingDirectory, backingFormat,
                                              uid, gid, allow_probe,
                                              cycle, backing) < 0) {
@@ -1206,7 +1210,9 @@ virStorageFileGetMetadataRecurse(const char *path, const char *canonPath,
             meta->backingMeta = backing;
         }
     }
+
     VIR_FREE(backingDirectory);
+    VIR_FREE(backingPath);
     return ret;
 }