On Tue, Feb 16, 2016 at 06:55:44PM +0100, Dennis Jacobfeuerborn
wrote:> Hi,
> I've noticed that the capacity of the disk in one of my VMs is
> completely wrongly reported by the python api. The image was transfered
> using scp but the transfer was aborted and now the api show a strange
value:
>
> [root@virt83 ~]# du -h /var/lib/libvirt/images/test-disk1
> 706M /var/lib/libvirt/images/test-disk1
> [root@virt83 ~]# ls -lh /var/lib/libvirt/images/test-disk1
> -rw-r--r--. 1 root root 706M 3. Nov 20:03
> /var/lib/libvirt/images/test-disk1
> [root@virt83 ~]# qemu-img info /var/lib/libvirt/images/test-disk1
> image: /var/lib/libvirt/images/test-disk1
> file format: raw
> virtual size: 705M (739573760 bytes)
> disk size: 705M
>
> Notice how that raw image is seen with a size of 705M by ls, du and
> qemu-img however when I get a blockinfo using libvirt-python using the
> blockInfo() call I get this:
>
> {'source': '/var/lib/libvirt/images/test-disk1',
'target': 'vda'}
> [2423276348619671841L, 739577856L, 739577856L]
>
> Obviously the first value (capacity) is way too large to be correct.
> Any ideas if this is a bug or if there is something else going on?
>
If it also happens with 'virsh domblkinfo', then the bug is not in the
python bindings.
Running libvirtd with debug logs might give you a hint where the value
came from:
http://libvirt.org/logging.html
Also, the code paths are different for running and inactive domains -
for inactive domains libvirtd figures out the data by looking at/into
the file, for active domains it asks QEMU via the query-block{,stats}
commands.
Jan