[libvirt] [PATCH v2 4/5] qemu: Wire up virDomainSuspendForDuration API
Michal Privoznik
mprivozn at redhat.com
Fri Mar 16 09:26:43 UTC 2012
On 16.03.2012 07:52, Osier Yang wrote:
> On 03/16/2012 07:11 AM, Eric Blake wrote:
>> On 01/26/2012 12:59 PM, Michal Privoznik wrote:
>>> This makes use of QEMU guest agent to implement the
>>> virDomainSuspendForDuration API.
>>> ---
>>> src/qemu/qemu_driver.c | 93
>>> ++++++++++++++++++++++++++++++++++++++++++++++++
>>> 1 files changed, 93 insertions(+), 0 deletions(-)
>>
>>> +
>>> + if (!virDomainObjIsActive(vm)) {
>>> + qemuReportError(VIR_ERR_OPERATION_INVALID,
>>> + "%s", _("domain is not running"));
>>> + goto cleanup;
>>> + }
>>
>> Same question as for quiesce: putting the guest into S3 will only work
>> if the agent can respond, so checking merely for active is not enough.
>> If the guest is active but paused, then we can't talk to the agent to
>> issue the request. Having the common guest agent code check for this
>> condition will prevent the scenario of:
>>
>> guest is paused
>> issue the pm suspend, but it times out
>
> Actually I encounted the problem when playing dompmsuspend,
> the dompmsuspend command hangs forever, so I tried to
> suspend the guest with "pm-suspend" inside guest directly,
> and then dompmwakeup returns quickly with success, however,
> the guest wasn't waken up actually.
>
> So there are at least two problems here:
> 1) dompmsuspend hangs
> 2) dompmwakeup returns success, while the guest wasn't waken
> up actally.
>
> For 1), I tried to create a patch with using guest agent command
> "guest-ping" to ping the guest agent first before executing the
> guest-suspend-* commands, and hope it could return quickly if the
> guest agent isn't available or something else which cause the guest
> agent doesn't response, and thus we could quit quickly, but no luck,
> the "guest-ping" hangs too.
This was my approach as well:
https://www.redhat.com/archives/libvir-list/2012-February/msg00055.html
Although I've used waiting with timeout; therefore making any fail
harmless. Because if we timeout on guest-sync which doesn't change the
state of guest, we don't issue any subsequent state-changing command.
I should reorder my TODO list and post the patch again. The sooner the
better.
More information about the libvir-list
mailing list