Now that virStorageFileGetMetadataFromBuf is used only for remote
filesystems, don't canonicalize the path in it.
---
src/util/virstoragefile.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c
index 4329395..2feda67 100644
--- a/src/util/virstoragefile.c
+++ b/src/util/virstoragefile.c
@@ -952,15 +952,8 @@ virStorageFileMetadataNew(const char *path,
if (VIR_STRDUP(ret->relPath, path) < 0)
goto error;
- if (virStorageIsFile(path)) {
- if (!(ret->path = canonicalize_file_name(path))) {
- virReportSystemError(errno, _("unable to resolve '%s'"),
path);
- goto error;
- }
- } else {
- if (VIR_STRDUP(ret->path, path) < 0)
- goto error;
- }
+ if (VIR_STRDUP(ret->path, path) < 0)
+ goto error;
return ret;
@@ -1096,16 +1089,24 @@ virStorageFileGetMetadataFromFD(const char *path,
{
virStorageSourcePtr ret = NULL;
+ char *canonPath = NULL;
+
+ if (!(canonPath = canonicalize_file_name(path))) {
+ virReportSystemError(errno, _("unable to resolve '%s'"),
path);
+ goto cleanup;
+ }
- if (!(ret = virStorageFileMetadataNew(path, format)))
+ if (!(ret = virStorageFileMetadataNew(canonPath, format)))
goto cleanup;
+
if (virStorageFileGetMetadataFromFDInternal(ret, fd, backingFormat) < 0) {
virStorageSourceFree(ret);
ret = NULL;
}
cleanup:
+ VIR_FREE(canonPath);
return ret;
}
--
1.9.3