Bug 1079162

Summary: The guest will be destroyed abnormally while revert the guest's snapshot which took in "pmsuspended" status
Product: Red Hat Enterprise Linux 7 Reporter: zhenfeng wang <zhwang>
Component: libvirtAssignee: Peter Krempa <pkrempa>
Status: CLOSED ERRATA QA Contact: Virtualization Bugs <virt-bugs>
Severity: medium Docs Contact:
Priority: medium    
Version: 7.0CC: ajia, dyuan, eblake, gsun, jdenemar, juzhou, mzhan, rbalakri, shyu, yanyang, ydu
Target Milestone: rc   
Target Release: ---   
Hardware: x86_64   
OS: Unspecified   
Whiteboard:
Fixed In Version: libvirt-1.2.7-1.el7 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
: 1079163 (view as bug list) Environment:
Last Closed: 2015-03-05 07:33:06 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:
Bug Depends On:    
Bug Blocks: 1079163, 1134154, 1143900    

Description zhenfeng wang 2014-03-21 05:56:10 UTC
Description of problem:
The guest will be destroyed abnormally while revert the guest's snapshot which took in "pmsuspended" status

Version-Release number of selected component (if applicable):
kernel-3.10.0-112.el7.x86_64
libvirt-1.1.1-28.el7.x86_64
qemu-kvm-rhev-1.5.3-53.el7.x86_64

How reproducible:
100%

Steps to Reproduce:
1.Prepare a running guest with qemu-guest-agent installed
# virsh list
 Id    Name                           State
----------------------------------------------------
 2     rhel7                         running

2.Do S3 with the guest
# virsh dompmsuspend rhel7 --target mem
Domain rhel7 successfully suspended
[root@rhel6 ~]# virsh list
 Id    Name                           State
----------------------------------------------------
 2     rhel7                        pmsuspended

3.Take the internal snapshot for the guest
#virsh snapshot-create-as rhel7 sp1
Domain snapshot sp1 created

# virsh snapshot-list rhel7
 Name                 Creation Time             State
------------------------------------------------------------
 sp1                  2014-03-18 22:10:19 -0400 pmsuspended

4.Wakeup the guest
#virsh dompmwakeup rhel7
Domain rhel7 successfully woken up
# virsh list
 Id    Name                           State
----------------------------------------------------
 2     rhel7                         running

5.Revert the snapshot for the guest
# virsh list --all
 Id    Name                           State
----------------------------------------------------
 -     rhel7                          shut off

# ps aux|grep qemu
root     25663  0.0  0.0 103252   840 pts/0    S+   22:45   0:00 grep qemu

6.Both rhel7 and rhel6 can hit this issue
  
Actual results:
The guest was destroyed abnormally while revert the guest's snapshot which took in "pmsuspended" status

Expected results:
If we support take and revert snapshot while guest in pmsuspend status, the guest should be in "pmsuspended" status
in step 5 and shouldn't be destroyed abnormally. if we didn't support take and revert snapshot while guest in pmsuspended
status, it should give a clear error

Additional info:

Comment 3 Peter Krempa 2014-07-22 08:57:30 UTC
Snapshots of guests in S3 state don't work well with qemu currently. I've pushed patch to forbid them:

commit 1e833899ce07ac02dadbde75ee0e6747eca1068c
Author: Peter Krempa <pkrempa>
Date:   Mon Jul 21 15:48:35 2014 +0200

    qemu: snapshot: Forbid taking/reverting snapshots in PMSUSPENDED state
    
    Qemu doesn't currently support them and behaves strangely. Just forbid
    them.
    
v1.2.6-220-g1e83389

This makes libvirt report an error instead of killing the guest.

Comment 5 Eric Blake 2014-08-27 03:14:16 UTC
The fix for this bug introduced a locking error, tracked in bug 1134154

Comment 6 Yang Yang 2014-12-05 02:33:58 UTC
I can reproduce it with libvirt-1.1.1-28.el7.x86_64

Verify it using the following component
libvirt-1.2.8-10.el7.x86_64
qemu-kvm-rhev-2.1.2-15.el7.x86_64
kernel-3.10.0-212.el7.x86_64

# virsh dompmsuspend vm2 --target mem
Domain vm2 successfully suspended

# virsh list --all
 Id    Name                           State
----------------------------------------------------
 6     vm2                            pmsuspended

# virsh snapshot-create-as vm2 sn1
error: Operation not supported: qemu doesn't support taking snapshots of PMSUSPENDED guests

I can get the same result using qemu-kvm-1.5.3-83.el7.x86_64.

So mark it as verified.

Comment 8 errata-xmlrpc 2015-03-05 07:33:06 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/RHSA-2015-0323.html