
On Fri, Dec 13, 2013 at 07:16:22AM -0500, Zhenfeng Wang wrote:
Hi I met a issue that while shutdown/reboot a guest which was in pmsuspended status with the acpi mode, the virsh command appears executed successfully, actually, the guest keep in pmsuspended status and it didn't shutoff the guest.Then I did the upper operation on my physical host, find the host will be waked up from the pmsuspended stuatus while i type the shutdown button , so maybe that's the expect result that the guest can't be shutdown successfully in pmsuspended status. So I think it should report a proper error or wake up the guest while we shutdown a guest which was in pmsuspended status. Since i'm not sure about this issue, so i hope you give me some advise to decide that whether we have necessary to track this issue, thanks.
pkginfo kernel-3.6.10-4.fc18.x86_64 libvirt-1.1.4-2.fc21.x86_64 qemu-1.4.0-5.fc20.x86_64
steps 1.Prepare a running guest # virsh list --all Id Name State ---------------------------------------------------- 6 rhel7 running
# vrish dumpxml rhel7 -- <pm> <suspend-to-mem enabled='yes'/> <suspend-to-disk enabled='yes'/> </pm>
-- <channel type='unix'> <source mode='bind' path='/var/lib/libvirt/qemu/rhel7.agent'/> <target type='virtio' name='org.qemu.guest_agent.0'/> <alias name='channel1'/> <address type='virtio-serial' controller='0' bus='0' port='1'/> </channel>
2.Install the qemu-guest-agent packet in the guest, then start the qemu-guest-agent service #systemctl start qemu-guest-agent
3.Do the S3 with the guest # virsh dompmsuspend rhel7 --target mem Domain rhel7 successfully suspended # virsh list Id Name State ---------------------------------------------------- 30 rhel7 pmsuspended
This looks ok, I guess the guest is properly pm-suspended, right?
4.Shutdown the guest with acpi, The command also appears executed successfully, actually, it didn't shutoff the guest I think it shoud report error here if the guest can't be shutdown successfully.
# virsh shutdown rhel7 --mode acpi Domain rhel7 is being shutdown
# echo $? 0
I suspect you did this *after* you pmsuspended the guest, right?
# virsh list Id Name State ---------------------------------------------------- 30 rhel7 pmsuspended
Check the libvirtd's log, we can see the following log 2013-12-13 10:11:46.004+0000: 25134: debug : qemuMonitorJSONIOProcessLine:175 : QEMU_MONITOR_RECV_REPLY: mon=0x7f824800c190 reply={"return": {}, "id": "libvirt-9"} 2013-12-13 10:11:46.004+0000: 25134: debug : qemuMonitorJSONIOProcessLine:155 : Line [{"timestamp": {"seconds": 1386929506, "microseconds": 3807}, "event": "POWERDOWN"}] 2013-12-13 10:11:46.004+0000: 25134: debug : virJSONValueFromString:975 : string={"timestamp": {"seconds": 1386929506, "microseconds": 3807}, "event": "POWERDOWN"} 2013-12-13 10:11:46.005+0000: 25134: debug : qemuMonitorJSONIOProcessLine:170 : QEMU_MONITOR_RECV_EVENT: mon=0x7f824800c190 event={"timestamp": {"seconds": 1386929506, "microseconds": 3807}, "event": "POWERDOWN"}
If my presumptions are true than I must say this works as expected. Let me explain. The thing is that if you issue shutdown --mode acpi, it does the same thing as pressing a hardware poweroff button. Apart from the fact that it only means shutdown and it won't start the domain back. But that doesn't matter. You are sending ACPI event to a domain which is not running, thus it cannot respond to your request. Martin