From 58a54dc37340113f83da587387a297d05d5342cf Mon Sep 17 00:00:00 2001 From: Peter Krempa Date: Wed, 21 Nov 2012 11:57:22 +0100 Subject: [PATCH] qemu: Stop recursive detection of image chains when an image is missing Commit e0c469e58b93f852a72265919703cb6abd3779f8 that fixes the detection of image chain wasn't complete. Iteration through the backing image chain has to stop at the last existing image if some of the images are missing otherwise the backing chain that is cached contains entries with paths being set to NULL resulting to: error: Unable to allow access for disk path (null): Bad address Fortunately stat() is kind enough not to crash when it's presented with a NULL argument. At least on Linux. --- src/util/storage_file.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/util/storage_file.c b/src/util/storage_file.c index 224921277c..4417404701 100644 --- a/src/util/storage_file.c +++ b/src/util/storage_file.c @@ -728,8 +728,13 @@ virStorageFileGetMetadataFromBuf(int format, meta->backingStore = absolutePathFromBaseFile(path, backing); if (meta->backingStore == NULL) { /* the backing file is (currently) unavailable, treat this - * file as standalone */ + * file as standalone: + * backingStoreRaw is kept to mark broken image chains */ + meta->backingStoreIsFile = false; backingFormat = VIR_STORAGE_FILE_NONE; + VIR_WARN("Backing file '%s' of image '%s' is missing.", + meta->backingStoreRaw, path); + } } VIR_FREE(backing);