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