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.
This commit is contained in:
Peter Krempa 2014-04-17 14:09:58 +02:00
parent 05bc536c83
commit c366a1ef15

View 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;
}