Bug 1171533

Summary: [snapshot]Error message should be improved when forbidding to create internal snapshot with passthrough device
Product: Red Hat Enterprise Linux 7 Reporter: vivian zhang <vivianzhang>
Component: libvirtAssignee: Peter Krempa <pkrempa>
Status: CLOSED ERRATA QA Contact: Virtualization Bugs <virt-bugs>
Severity: medium Docs Contact:
Priority: medium    
Version: 7.1CC: dyuan, igeorgex, jdenemar, mzhan, pkrempa, rbalakri, shyu, xuzhang, yanyang, ydu, zhwang
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: libvirt-1.2.13-1.el7 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2015-11-19 05:57:29 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 vivian zhang 2014-12-08 02:43:36 UTC
Description of problem:
When attempting to create internal snapshot with passthrough device, error reported should be improved from "error: operation failed: Error -22 while writing VM" to "error: Requested operation is not valid: domain has assigned non-USB host devices"

Version-Release number of selected component (if applicable):
libvirt-1.2.8-10.el7.x86_64
qemu-kvm-rhev-2.1.2-14.el7.x86_64
3.10.0-205.el7.x86_64

How reproducible:
100%

Steps to Reproduce:
1.prepare a SRIOV env,and passthrough a PCI device to guest

#virsh dumpxml yy
...
<hostdev mode='subsystem' type='pci' managed='yes'>
      <driver name='vfio'/>
      <source>
        <address domain='0x0000' bus='0x03' slot='0x10' function='0x0'/>
      </source>
      <alias name='hostdev0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </hostdev>
...
2.do internal snapshot create with snapshot-create-as, get below error report
# virsh snapshot-create-as yy yy.sp
error: operation failed: Error -22 while writing VM


Actual results:
error message should be improved 

Expected results:
# virsh snapshot-create-as yy yy.sp
error: Requested operation is not valid: domain has assigned non-USB host devices

Additional info:
In fact, the internal snapshot case is now fixed upstream:

commit d1e460136a8ad1ce7717d2d75cd878812f63f1bb
Author: Shanzhi Yu <shyu>
Date:   Wed Dec 3 19:12:35 2014 +0800

    qemu: snapshot: Forbid internal snapshot with passthrough devices
    
    When attempting to create internal system checkpoint with a passthrough
    device qemu will report the following error:
    
    error: operation failed: Error -22 while writing VM
    
    This patch calls the function to check if migration is possible with
    given VM and thus improves the error to:
    
    error: Requested operation is not valid: domain has assigned non-USB host devices
    
    Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=874418#c19
    Signed-off-by: Peter Krempa <pkrempa>

this issue is a small one, so we open it for rhel7.2

original bug please refer https://bugzilla.redhat.com/show_bug.cgi?id=874418

Comment 3 Yang Yang 2015-06-17 03:34:52 UTC
Verified on libvirt-1.2.16-1.el7.x86_64

1. prepare a running vm with scsi host device
<hostdev mode='subsystem' type='scsi' managed='no'>
      <source>
        <adapter name='scsi_host6'/>
        <address bus='0' target='0' unit='0'/>
      </source>
      <alias name='hostdev0'/>
      <address type='drive' controller='0' bus='0' target='0' unit='0'/>
    </hostdev>

# virsh snapshot-create-as simple s1
error: Requested operation is not valid: domain has assigned non-USB host devices

2. prepare a running vm with usb host device
<hostdev mode='subsystem' type='usb' managed='yes'>
      <source>
        <vendor id='0x058f'/>
        <product id='0x6387'/>
        <address bus='1' device='3'/>
      </source>
      <alias name='hostdev1'/>
    </hostdev>

# virsh snapshot-create-as simple s1
Domain snapshot s1 created
# virsh snapshot-list simple
 Name                 Creation Time             State
------------------------------------------------------------
 s1                   2015-06-17 11:10:47 +0800 running

3. prepare a running vm with pci host device
<hostdev mode='subsystem' type='pci' managed='yes'>
      <driver name='vfio'/>
      <source>
        <address domain='0x0000' bus='0x03' slot='0x10' function='0x0'/>
      </source>
      <alias name='hostdev0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </hostdev>
# virsh snapshot-create-as simple s1
error: Requested operation is not valid: domain has assigned non-USB host devices

Comment 6 errata-xmlrpc 2015-11-19 05:57:29 UTC
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/RHBA-2015-2202.html