Bug 1168453
| Summary: | Disk should be removed while using no-exist 'file' type volume with startupPolicy='optional' | ||
|---|---|---|---|
| Product: | Red Hat Enterprise Linux 7 | Reporter: | Pei Zhang <pzhang> |
| Component: | libvirt | Assignee: | Martin Kletzander <mkletzan> |
| Status: | CLOSED ERRATA | QA Contact: | Virtualization Bugs <virt-bugs> |
| Severity: | medium | Docs Contact: | |
| Priority: | medium | ||
| Version: | 7.1 | CC: | dyuan, mzhan, rbalakri, xuzhang, yisun |
| Target Milestone: | rc | ||
| Target Release: | --- | ||
| Hardware: | Unspecified | ||
| OS: | Unspecified | ||
| Whiteboard: | |||
| Fixed In Version: | libvirt-2.0.0-4.el7 | Doc Type: | Bug Fix |
| Doc Text: | Story Points: | --- | |
| Clone Of: | Environment: | ||
| Last Closed: | 2016-11-03 18:11:19 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: | |||
Fixed upstream with v2.1.0-rc1-30-ge2705cfb6e50..v2.1.0-rc1-32-ga2b97a8d912a:
commit e2705cfb6e50039a5f1d1c620f7ed18b37eca36d
Author: Martin Kletzander <mkletzan>
Date: Mon Aug 1 17:52:02 2016 +0200
qemu: Make qemuDomainCheckDiskStartupPolicy self-contained
commit 779a4ea9066560b92b0df462b5a6d5c127c15920
Author: Martin Kletzander <mkletzan>
Date: Mon Aug 1 17:56:26 2016 +0200
qemu: Remove unnecessary label and its only reference
commit a2b97a8d912a37ba1935bf98be4c332f42332236
Author: Martin Kletzander <mkletzan>
Date: Mon Aug 1 17:51:28 2016 +0200
qemu: Fix support for startupPolicy with volume/pool disks
Verified on libvirt-2.0.0-4.el7.x86_64n & qemu-kvm-rhev-2.6.0-17.el7.x86_64
PASSED
steps:
# virsh dumpxml --inactive virtlab_test | grep disk -a10
...
<disk type='volume' device='disk'>
<driver name='qemu' type='qcow2'/>
<source pool='tmpdir' volume='qcow2.img' startupPolicy='optional'/>
<target dev='vdb' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x0a' function='0x0'/>
</disk>
...
# virsh vol-list tmpdir
Name Path
------------------------------------------------------------------------------
qcow2.img /tmp/dir/qcow2.img
# virsh dumpxml virtlab_test | grep disk -a10
...
<disk type='volume' device='disk'>
<driver name='qemu' type='qcow2'/>
<source pool='tmpdir' volume='qcow2.img' startupPolicy='optional'/>
<backingStore/>
<target dev='vdb' bus='virtio'/>
<alias name='virtio-disk1'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x0a' function='0x0'/>
</disk>
...
# mv /tmp/dir/qcow2.img /tmp/dir/qcow2.img.bkup
# virsh pool-refresh tmpdir
Pool tmpdir refreshed
# virsh vol-list tmpdir
Name Path
------------------------------------------------------------------------------
qcow2.img.bkup /tmp/dir/qcow2.img.bkup
# virsh destroy virtlab_test
Domain virtlab_test destroyed
# virsh start virtlab_test
Domain virtlab_test started
# virsh dumpxml virtlab_test | grep disk -a10
... <the volume not listed as not existed anymore > ...
#virsh edit virtlab_test //change the pool name to a non-existing name
...
<disk type='volume' device='disk'>
<driver name='qemu' type='qcow2'/>
<source pool='non-exiting-pool' volume='qcow2.img' startupPolicy='optional'/>
<target dev='vdb' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x0a' function='0x0'/>
</disk>
...
# virsh destroy virtlab_test
virDomain virtlab_test destroyed
# virsh start virtlab_test
Domain virtlab_test started
# virsh dumpxml virtlab_test | grep disk -a10
... <the volume not listed as the pool not existed> ...
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://rhn.redhat.com/errata/RHSA-2016-2577.html |
Description of problem: For specified storage volume is of 'file' type which represents a disk , if it is not accessible with startupPolicy='optional' .the disk should be removed. version: libvirt-1.2.8-8.el7.x86_64 qemu-kvm-rhev-2.1.2-12.el7.x86_64 kernel-3.10.0-208.el7.x86_64 How reproducible: 100% Steps to Reproduce: 1.prepare a pool in which the volume is of 'file' type # virsh vol-list netfs-nfs-pool --details Name Path Type Capacity Allocation ------------------------------------------------------------------------------------------------------- disk.img /var/lib/libvirt/images/netfs-nfs/disk.img file 1.00 GiB 0.00 B qcow2.img /var/lib/libvirt/images/netfs-nfs/qcow2.img file 1.00 GiB 0.00 B 2.add the volume to domain # virsh dumpxml r7q2 | grep disk -A 10 <disk type='file' device='disk'> <driver name='qemu' type='qcow2'/> <source file='/var/lib/libvirt/images/r7q2.img' startupPolicy='optional'/> <target dev='vda' bus='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/> </disk> <disk type='volume' device='disk'> <driver name='qemu' type='qcow2'/> <source pool='netfs-nfs-pool' volume='qcow2.img' startupPolicy='optional'/> <target dev='vdb' bus='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/> </disk> 3.remove the volume # virsh vol-list netfs-nfs-pool --details Name Path Type Capacity Allocation ---------------------------------------------------------------------------------------------------- disk.img /var/lib/libvirt/images/netfs-nfs/disk.img file 1.00 GiB 0.00 B qcow2.img.bak /var/lib/libvirt/images/netfs-nfs/qcow2.img.bak file 1.00 GiB 196.00 KiB 4.reboot the domain , fail to start . cannot find volume # virsh destroy r7q2 ; virsh start r7q2 Domain r7q2 destroyed error: Failed to start domain r7q2 error: Storage volume not found: no storage vol with matching path '/var/lib/libvirt/images/qcow2.img' Actual results: as steps 4 , guest fail to start . Expected results: the volume disk with startupPolicy='optional' should be removed and guest can start successfully. Additional info: