On 11/07/2012 06:53 AM, Philipp Hahn wrote: > 82507838 refactured the code to keep both the raw and canonicalized form s/refactured/refactored/ > of the backingStore, which breaks badly when the storage pool contains a > storage volume, which is missing its backing store file: > # ./daemon/libvirtd -l > 2012-11-07 12:43:33.279+0000: 22175: info : libvirt version: 1.0.0 > 2012-11-07 12:43:33.279+0000: 22175: error : absolutePathFromBaseFile:542 : Can't canonicalize path '/var/lib/libvirt/images/base.qcow2': No such file or directory > 2012-11-07 12:43:33.280+0000: 22175: error : storageDriverAutostart:115 : Failed to autostart storage pool 'default': Can't canonicalize path '/var/lib/libvirt/images/base.qcow2': No such file or directory > > This is because virStorageFileGetMetadataFromBuf() aborts with -1 if the > filename of the backingStore can not be canonicalized: > #0 absolutePathFromBaseFile () at util/storage_file.c:541 > #1 virStorageFileGetMetadataFromBuf () at util/storage_file.c:728 > #2 virStorageFileGetMetadataFromFD () at util/storage_file.c:932 > #3 virStorageBackendProbeTarget () at storage/storage_backend_fs.c:94 > #4 virStorageBackendFileSystemRefresh () at storage/storage_backend_fs.c:849 > #5 storagePoolStart () at storage/storage_driver.c:700 > #6 virStoragePoolCreate () at libvirt.c:12471 > ... > > Treat files which miss their backing file as standalone files. Makes sense; I don't know of anything better that we can do. ACK and pushed. > > Signed-off-by: Philipp Hahn <hahn@xxxxxxxxxxxxx> > --- > src/util/storage_file.c | 5 +++-- > 1 files changed, 3 insertions(+), 2 deletions(-) > > diff --git a/src/util/storage_file.c b/src/util/storage_file.c > index e9771d7..2249212 100644 > --- a/src/util/storage_file.c > +++ b/src/util/storage_file.c > @@ -727,8 +727,9 @@ virStorageFileGetMetadataFromBuf(int format, > meta->backingStoreRaw = meta->backingStore; > meta->backingStore = absolutePathFromBaseFile(path, backing); > if (meta->backingStore == NULL) { > - VIR_FREE(backing); > - return -1; > + /* the backing file is (currently) unavailable, treat this > + * file as standalone */ > + backingFormat = VIR_STORAGE_FILE_NONE; > } > } > VIR_FREE(backing); > -- Eric Blake eblake@xxxxxxxxxx +1-919-301-3266 Libvirt virtualization library http://libvirt.org
Attachment:
signature.asc
Description: OpenPGP digital signature
-- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list