Bug 884713

Summary: Add support for qemu-kvm's BALLOON_CHANGE event to avoid using monitor in virDomainGetXMLDesc
Product: Red Hat Enterprise Linux 6 Reporter: Chris Pelland <cpelland>
Component: libvirtAssignee: Jiri Denemark <jdenemar>
Status: CLOSED ERRATA QA Contact: Virtualization Bugs <virt-bugs>
Severity: urgent Docs Contact:
Priority: high    
Version: 6.3CC: abaron, acathrow, areis, bazulay, berrange, bsarathy, cpelland, dallan, dron, dyasny, dyuan, hateya, iheim, jdenemar, juzhang, libvirt-maint, lpeer, michen, mjenner, mkenneth, mzhan, pm-eus, rwu, sluo, virt-maint, whuang, xfu, ykaul, zpeng
Target Milestone: rcKeywords: ZStream
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: libvirt-0.9.10-21.el6_3.7 Doc Type: Bug Fix
Doc Text:
Whenever the virDomainGetXMLDesc() function was executed on a domain that was unresponsive, the call also became unresponsive. With this update, QEMU sends the BALLOON_CHANGE event when memory usage on a domain changes so that virDomainGetXMLDesc() no longer has to query an unresponsive domain. As a result, virDomainGetXMLDesc() calls no longer hang in the described scenario.
Story Points: ---
Clone Of: Environment:
Last Closed: 2012-12-19 09:43:41 UTC Type: ---
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: 884650    
Bug Blocks:    

Description Chris Pelland 2012-12-06 15:46:45 UTC
This bug has been copied from bug #884650 and has been proposed
to be backported to 6.3 z-stream (EUS).

Comment 6 Huang Wenlong 2012-12-11 04:52:31 UTC
Hi, Jiri 

I try to verify this bug , but I do not know the exactly steps,I do the following step ,can you give me some suggestions to verify this bug ?

my env: 
libvirt-0.9.10-21.el6_3.7.x86_64
qemu-kvm-rhev-0.12.1.2-2.295.el6_3.balloon2.x86_64 (https://bugzilla.redhat.com/show_bug.cgi?id=881732#c36 )
vdsm-4.9.6-44.0.el6_3.x86_64

1) start a guest 

2) check "BALLOON_CHANGE" event
# virsh qemu-monitor-command n2  '{"execute": "query-events"}'
{"return":[{"name":"BALLOON_CHANGE"},{"name":"WAKEUP"},{"name":"SUSPEND"},{"name":"__com.redhat_SPICE_DISCONNECTED"},{"name":"__com.redhat_SPICE_INITIALIZED"},{"name":"BLOCK_JOB_CANCELLED"},{"name":"BLOCK_JOB_COMPLETED"},{"name":"DEVICE_TRAY_MOVED"},{"name":"SPICE_DISCONNECTED"},{"name":"SPICE_INITIALIZED"},{"name":"SPICE_CONNECTED"},{"name":"WATCHDOG"},{"name":"RTC_CHANGE"},{"name":"BLOCK_IO_ERROR"},{"name":"VNC_DISCONNECTED"},{"name":"VNC_INITIALIZED"},{"name":"VNC_CONNECTED"},{"name":"RESUME"},{"name":"STOP"},{"name":"POWERDOWN"},{"name":"RESET"},{"name":"SHUTDOWN"}],"id":"libvirt-39"}


but if I do the steps in bug 881732 the host vdsm is still stuck .


Wenlong

Comment 8 Jiri Denemark 2012-12-11 09:03:46 UTC
To test this bug, you don't even need vdsm. Just follow the steps below:

1. virsh start DOM
2. virsh setmem DOM MEMORY
3. kill -STOP DOM_QEMU_PROCESS
4. virsh dumpxml DOM
5. kill -CONT DOM_QEMU_PROCESS

With unfixed libvirt, virsh dumpxml would block until step 5 is done. The fixed version will return domain XML immediately even if the qemu process is stopped and not responding.

Comment 9 Huang Wenlong 2012-12-11 09:16:28 UTC
(In reply to comment #8)
> To test this bug, you don't even need vdsm. Just follow the steps below:
> 
> 1. virsh start DOM
> 2. virsh setmem DOM MEMORY
> 3. kill -STOP DOM_QEMU_PROCESS
> 4. virsh dumpxml DOM
> 5. kill -CONT DOM_QEMU_PROCESS
> 
> With unfixed libvirt, virsh dumpxml would block until step 5 is done. The
> fixed version will return domain XML immediately even if the qemu process is
> stopped and not responding.

Thanks for your help !

Verify this bug: 
libvirt-0.9.10-21.el6_3.7.x86_64
qemu-kvm-rhev-0.12.1.2-2.295.el6_3.balloon2.x86_64

1)  start a guest
virsh list 
 Id    Name                           State
----------------------------------------------------
 10    n2                             running


2) virsh setmem DOM MEMORY 
#virsh setmem n2 800M 

3)kill -STOP DOM_QEMU_PROCESS

4) virsh dumpxml n2     (no block)

<domain type='kvm' id='10'>
  <name>n2</name>
  <uuid>25f3ac88-0cc8-4025-bfc0-b09d5aac28eb</uuid>
  <memory unit='KiB'>1048576</memory>
  <currentMemory unit='KiB'>819200</currentMemory>
  <vcpu placement='static'>1</vcpu>
  <cputune>
    <shares>1020</shares>
  </cputune>
  <sysinfo type='smbios'>
    <system>
.....


5) kill -CONT DOM_QEMU_PROCESS

Comment 10 Huang Wenlong 2012-12-11 10:16:20 UTC
I reproduce this bug with :

libvirt-0.9.10-21.el6_3.6.x86_64
qemu-kvm-rhev-0.12.1.2-2.295.el6_3.8.x86_64 

and 

libvirt-0.9.10-21.el6_3.6.x86_64
qemu-kvm-rhev-0.12.1.2-2.295.el6_3.balloon2.x86_64

then verify it with comment 9

Comment 11 Huang Wenlong 2012-12-14 06:21:30 UTC
I can reproduce this bug with:

libvirt-0.9.10-21.el6_3.6.x86_64
qemu-kvm-rhev-0.12.1.2-2.295.el6_3.10.x86_64


then verify this bug with:

libvirt-0.9.10-21.el6_3.7.x86_64
qemu-kvm-rhev-0.12.1.2-2.295.el6_3.10.x86_64

steps as comment 9

Comment 13 errata-xmlrpc 2012-12-19 09:43:41 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.

http://rhn.redhat.com/errata/RHBA-2012-1595.html