On 07/02/2013 11:35 AM, Guannan Ren wrote:
If one of backing files for disk source doesn't exist, the guest
will not
be able to find and use the disk even though the disk still exists in
guest xml definition. So reporting an error make more sense.
Adding virFileAccessibleAs() to check if the backing file described in
disk meta exist in real path. If not, report error. the uid and gid
arguments don't have so much meannings for F_OK, so give 0 for them.
---
src/util/virstoragefile.c | 23 +++++++++++++++--------
tests/virstoragetest.c | 16 ++++++++--------
2 files changed, 23 insertions(+), 16 deletions(-)
diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c
index 27aa4fe..cb61e5b 100644
--- a/src/util/virstoragefile.c
+++ b/src/util/virstoragefile.c
@@ -870,14 +877,10 @@ virStorageFileGetMetadataInternal(const char
*path,
!!directory, backing,
&meta->directory,
&meta->backingStore) < 0) {
- /* the backing file is (currently) unavailable, treat this
- * 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_ERROR(_("Backing file '%s' of image '%s' is
missing."),
+ meta->backingStoreRaw, path);
+ VIR_FREE(backing);
+ goto cleanup;
}
}
VIR_FREE(backing);
This change means you won't be able to start the pool if one of the files is
missing a backing file. I've forwarded a patch [1] from/for [2] that ignores
missing files on pool start and there is a bug [3] requesting that we ignore
other files as well. I feel like this is going in the other direction.
Wouldn't it be enough to check for them on domain start-up and leave the pool
running even if one of those volumes doesn't have an existing backing file?
Jan
[1]
https://www.redhat.com/archives/libvir-list/2013-July/msg00635.html
[2]
https://bugzilla.redhat.com/show_bug.cgi?id=977706
[3]
https://bugzilla.redhat.com/show_bug.cgi?id=710866