Bugzilla will be upgraded to version 5.0. The upgrade date is tentatively scheduled for 2 December 2018, pending final testing and feedback.
Bug 1168453 - Disk should be removed while using no-exist 'file' type volume with startupPolicy='optional'
Disk should be removed while using no-exist 'file' type volume with startupPo...
Status: CLOSED ERRATA
Product: Red Hat Enterprise Linux 7
Classification: Red Hat
Component: libvirt (Show other bugs)
7.1
Unspecified Unspecified
medium Severity medium
: rc
: ---
Assigned To: Martin Kletzander
Virtualization Bugs
:
Depends On:
Blocks:
  Show dependency treegraph
 
Reported: 2014-11-26 21:26 EST by Pei Zhang
Modified: 2016-11-03 14:11 EDT (History)
5 users (show)

See Also:
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 14:11:19 EDT
Type: Bug
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---


Attachments (Terms of Use)


External Trackers
Tracker ID Priority Status Summary Last Updated
Red Hat Product Errata RHSA-2016:2577 normal SHIPPED_LIVE Moderate: libvirt security, bug fix, and enhancement update 2016-11-03 08:07:06 EDT

  None (edit)
Description Pei Zhang 2014-11-26 21:26:19 EST
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:
Comment 5 Martin Kletzander 2016-08-02 07:28:57 EDT
Fixed upstream with v2.1.0-rc1-30-ge2705cfb6e50..v2.1.0-rc1-32-ga2b97a8d912a:

commit e2705cfb6e50039a5f1d1c620f7ed18b37eca36d
Author: Martin Kletzander <mkletzan@redhat.com>
Date:   Mon Aug 1 17:52:02 2016 +0200

    qemu: Make qemuDomainCheckDiskStartupPolicy self-contained

commit 779a4ea9066560b92b0df462b5a6d5c127c15920
Author: Martin Kletzander <mkletzan@redhat.com>
Date:   Mon Aug 1 17:56:26 2016 +0200

    qemu: Remove unnecessary label and its only reference

commit a2b97a8d912a37ba1935bf98be4c332f42332236
Author: Martin Kletzander <mkletzan@redhat.com>
Date:   Mon Aug 1 17:51:28 2016 +0200

    qemu: Fix support for startupPolicy with volume/pool disks
Comment 8 yisun 2016-08-10 02:28:51 EDT
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> ...
Comment 10 errata-xmlrpc 2016-11-03 14:11:19 EDT
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

Note You need to log in before you can comment on or make changes to this bug.