From c366a1ef154587d327b8ab3afdf9a24af45df1e8 Mon Sep 17 00:00:00 2001 From: Peter Krempa Date: Thu, 17 Apr 2014 14:09:58 +0200 Subject: [PATCH] util: virstoragefile: Don't use "backingStore" directly 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 | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c index 9ea3e4ff2d..bde3ab044f 100644 --- a/src/util/virstoragefile.c +++ b/src/util/virstoragefile.c @@ -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; } -- GitLab