Bug 1529663
Summary: | No backing file info in the output of 'virsh vol-dumpxml' for images created by qemu-img | ||
---|---|---|---|
Product: | Red Hat Enterprise Linux 7 | Reporter: | yafu <yafu> |
Component: | libvirt | Assignee: | Peter Krempa <pkrempa> |
Status: | CLOSED ERRATA | QA Contact: | Han Han <hhan> |
Severity: | unspecified | Docs Contact: | |
Priority: | unspecified | ||
Version: | 7.5 | CC: | dyuan, fjin, hhan, lmen, pkrempa, rbalakri, salmy, xuzhang, yisun, zpeng |
Target Milestone: | rc | Keywords: | Regression |
Target Release: | --- | ||
Hardware: | Unspecified | ||
OS: | Unspecified | ||
Whiteboard: | |||
Fixed In Version: | libvirt-3.9.0-7.el7 | Doc Type: | If docs needed, set a value |
Doc Text: | Story Points: | --- | |
Clone Of: | Environment: | ||
Last Closed: | 2018-04-10 11:04:21 UTC | Type: | Bug |
Regression: | --- | Mount Type: | --- |
Documentation: | --- | CRM: | |
Verified Versions: | Category: | --- | |
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
Cloudforms Team: | --- | Target Upstream Version: | |
Embargoed: |
Description
yafu
2017-12-29 08:31:57 UTC
Fixed upstream: commit d0307a9a766f1eb0f24ad2cc7c7ae730f1bde966 Author: Julio Faracco <jcfaracco> Date: Tue Jan 2 16:52:20 2018 -0200 storage: Fixing missing 'backingStore' tag from volume XML dumps. After commit a693fdb 'vol-dumpxml' missed the ability to show backingStore information. This commit adds a volume type for files that fixes this problem. Hi, Peter, I tried as comment0 and find it works on libvirt-3.9.0-7.el7.x86_64 qemu-kvm-rhev-2.10.0-15.el7.x86_64. But for block volume type, it doesn't works: 1. Prepare a logical pool named HostVG and create 1 LV # virsh vol-list HostVG Name Path ------------------------------------------------------------------------------ aa /dev/HostVG/aa 2. Create backing chain and refresh pool # lvcreate -n cc HostVG -L 1G Logical volume "cc" created. # qemu-img create -b /dev/HostVG/aa /dev/HostVG/cc -f qcow2 -o backing_fmt=raw Formatting '/dev/HostVG/cc', fmt=qcow2 size=1073741824 backing_file=/dev/HostVG/aa backing_fmt=raw cluster_size=65536 lazy_refcounts=off refcount_bits=16 # virsh pool-refresh HostVG Pool HostVG refreshed 3. Show volume xml # virsh vol-list HostVG Name Path ------------------------------------------------------------------------------ aa /dev/HostVG/aa cc /dev/HostVG/cc # qemu-img info /dev/HostVG/cc image: /dev/HostVG/cc file format: qcow2 virtual size: 1.0G (1073741824 bytes) disk size: 0 cluster_size: 65536 backing file: /dev/HostVG/aa backing file format: raw Format specific information: compat: 1.1 lazy refcounts: false refcount bits: 16 corrupt: false # virsh vol-dumpxml cc --pool HostVG <volume type='block'> <name>cc</name> <key>CWTAtL-HYEL-tLPt-zy8J-1OKl-bxgk-IatDEz</key> <source> <device path='/dev/sdg'> <extent start='1073741824' end='2147483648'/> </device> </source> <capacity unit='bytes'>1073741824</capacity> <allocation unit='bytes'>1073741824</allocation> <physical unit='bytes'>1073741824</physical> <target> <path>/dev/HostVG/cc</path> <permissions> <mode>0660</mode> <owner>0</owner> <group>6</group> <label>system_u:object_r:fixed_disk_device_t:s0</label> </permissions> <timestamps> <atime>1515490120.980453780</atime> <mtime>1515490120.980453780</mtime> <ctime>1515490120.980453780</ctime> </timestamps> </target> </volume> No backingStore element in volume xml. Since the patch only contains changes on file type, I think block/dir/network/netdir have the similar problem. Verified on qemu-kvm-rhev-2.10.0-18.el7.x86_64 libvirt-3.9.0-9.el7.x86_64: 1. Create a backing file in a dir pool: # qemu-img create /var/lib/libvirt/images/a 100M Formatting '/var/lib/libvirt/images/a', fmt=raw size=104857600 # qemu-img create -b /var/lib/libvirt/images/a /var/lib/libvirt/images/b -o backing_fmt=raw -f qcow2 Formatting '/var/lib/libvirt/images/b', fmt=qcow2 size=104857600 backing_file=/var/lib/libvirt/images/a backing_fmt=raw cluster_size=65536 lazy_refcounts=off refcount_bits=16 2. Refresh the dir pool and dump the volume xml: # virsh pool-refresh default Pool default refreshed # virsh vol-dumpxml --pool default b <volume type='file'> <name>b</name> <key>/var/lib/libvirt/images/b</key> <source> </source> <capacity unit='bytes'>104857600</capacity> <allocation unit='bytes'>200704</allocation> <physical unit='bytes'>196616</physical> <target> <path>/var/lib/libvirt/images/b</path> <format type='qcow2'/> <permissions> <mode>0644</mode> <owner>0</owner> <group>0</group> <label>unconfined_u:object_r:virt_image_t:s0</label> </permissions> <timestamps> <atime>1517388988.033868398</atime> <mtime>1517386690.691808870</mtime> <ctime>1517386690.691808870</ctime> </timestamps> <compat>1.1</compat> <features/> </target> <backingStore> <path>/var/lib/libvirt/images/a</path> <format type='raw'/> <permissions> <mode>0644</mode> <owner>0</owner> <group>0</group> <label>unconfined_u:object_r:virt_image_t:s0</label> </permissions> <timestamps> <atime>1517388988.022868299</atime> <mtime>1517386652.359479929</mtime> <ctime>1517386652.359479929</ctime> </timestamps> </backingStore> </volume> volume backing image is shown. (In reply to Han Han from comment #6) > Hi, Peter, > I tried as comment0 and find it works on libvirt-3.9.0-7.el7.x86_64 > qemu-kvm-rhev-2.10.0-15.el7.x86_64. But for block volume type, it doesn't > works: > 1. Prepare a logical pool named HostVG and create 1 LV > # virsh vol-list HostVG > Name Path > ----------------------------------------------------------------------------- > - > aa /dev/HostVG/aa > > 2. Create backing chain and refresh pool > # lvcreate -n cc HostVG -L 1G > > Logical volume "cc" created. > > # qemu-img create -b /dev/HostVG/aa /dev/HostVG/cc -f qcow2 -o > backing_fmt=raw > Formatting '/dev/HostVG/cc', fmt=qcow2 size=1073741824 > backing_file=/dev/HostVG/aa backing_fmt=raw cluster_size=65536 > lazy_refcounts=off refcount_bits=16 > > # virsh pool-refresh HostVG > > Pool HostVG refreshed > > 3. Show volume xml > # virsh vol-list HostVG > Name Path > ----------------------------------------------------------------------------- > - > aa /dev/HostVG/aa > cc /dev/HostVG/cc > > # qemu-img info /dev/HostVG/cc > > image: /dev/HostVG/cc > file format: qcow2 > virtual size: 1.0G (1073741824 bytes) > disk size: 0 > cluster_size: 65536 > backing file: /dev/HostVG/aa > backing file format: raw > Format specific information: > compat: 1.1 > lazy refcounts: false > refcount bits: 16 > corrupt: false > > > # virsh vol-dumpxml cc --pool HostVG [...] > </volume> > > No backingStore element in volume xml. Since the patch only contains changes > on file type, I think block/dir/network/netdir have the similar problem. So, looking at the code I have following conclusion: Libvirt supports following storage pool types: VIR_STORAGE_POOL_DIR, /* Local directory */ VIR_STORAGE_POOL_FS, /* Local filesystem */ VIR_STORAGE_POOL_NETFS, /* Networked filesystem - eg NFS, GFS, etc */ All of the above pools operate on local files and use the common code which I've fixed, so all of them should work fine. VIR_STORAGE_POOL_LOGICAL, /* Logical volume groups / volumes */ The logical pool has a different idea of using <backingStore>. The element is populated for sparse LVs and not by the contents of the qcow2 image. VIR_STORAGE_POOL_DISK, /* Disk partitions */ VIR_STORAGE_POOL_ISCSI, /* iSCSI targets */ VIR_STORAGE_POOL_SCSI, /* SCSI HBA */ VIR_STORAGE_POOL_MPATH, /* Multipath devices */ VIR_STORAGE_POOL_RBD, /* RADOS Block Device */ VIR_STORAGE_POOL_SHEEPDOG, /* Sheepdog device */ These don't ever populate (and didn't even before) the backingStore pointer, so it certainly will never show up for these. VIR_STORAGE_POOL_GLUSTER, /* Gluster device */ Gluster sets the backing store type already, so it should work as it used to. VIR_STORAGE_POOL_ZFS, /* ZFS */ This one doesn't ever populate the backingStore. VIR_STORAGE_POOL_VSTORAGE, /* Virtuozzo Storage */ This uses the local file helpers so it should work. It looks to me as if no other changes are necessary ... Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://access.redhat.com/errata/RHEA-2018:0704 |