[libvirt] [BUG] in [PATCHv3 10/19] storage: remember relative names in backing chain
Philipp Hahn
hahn at univention.de
Wed Nov 7 13:37:13 UTC 2012
Hello Eric,
On Thursday 18 October 2012 00:30:21 Eric Blake wrote:
> if (virBackingStoreIsFile(backing)) {
> meta->backingStoreIsFile = true;
> + meta->backingStoreRaw = meta->backingStore;
> meta->backingStore = absolutePathFromBaseFile(path,
> backing);
> - } else {
> - meta->backingStore = strdup(backing);
> + if (meta->backingStore == NULL) {
> + virReportOOMError();
> + VIR_FREE(backing);
> + return -1;
> + }
> }
this broke libvirt again when a storage pool contains storage volumes, which
(currently) miss their backing file; see my previous commit 0ed445e7 for
details.
virsh vol-create-as --format qcow2 default back.qcow2 1G
virsh vol-create-as --format qcow2 --backing-vol-format
qcow2 --backing-vol back.qcow2 default next.qcow2 1G
virsh vol-delete --pool default back.qcow2
pkill libvirtd
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
(gdb) bt
#0 absolutePathFromBaseFile (base_file=<value optimized out>,
path=0x7f27a0031d00 "/var/lib/libvirt/images/base.qcow2") at
util/storage_file.c:541
#1 0x00007f27b6769bdf in virStorageFileGetMetadataFromBuf
(path=0x7f27a0009510 "/var/lib/libvirt/images/next.qcow2", fd=<value
optimized out>, format=<value optimized out>)
at util/storage_file.c:728
#2 virStorageFileGetMetadataFromFD
(path=0x7f27a0009510 "/var/lib/libvirt/images/next.qcow2", fd=<value
optimized out>, format=<value optimized out>) at util/storage_file.c:932
#3 0x00007f27acd07c94 in virStorageBackendProbeTarget (conn=<value optimized
out>, pool=0x7f27a0012060) at storage/storage_backend_fs.c:94
#4 virStorageBackendFileSystemRefresh (conn=<value optimized out>,
pool=0x7f27a0012060) at storage/storage_backend_fs.c:849
#5 0x00007f27accfd560 in storagePoolStart (obj=0x1c915a0, flags=<value
optimized out>) at storage/storage_driver.c:700
There's another bug when doing a 'virsh vol-dumpxml' on such a broken image
file, for which I'm currently working on a patch. That patch works fine with
my older version of libvirt, but I noticed that with 1.0.0+git I can't no
longer start that pool containing my broken test image.
Sincerely
Philipp
--
Philipp Hahn Open Source Software Engineer hahn at univention.de
Univention GmbH be open. fon: +49 421 22 232- 0
Mary-Somerville-Str.1 D-28359 Bremen fax: +49 421 22 232-99
http://www.univention.de/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 197 bytes
Desc: This is a digitally signed message part.
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20121107/61b4a65a/attachment-0001.sig>
More information about the libvir-list
mailing list