All of lore.kernel.org
 help / color / mirror / Atom feed
* question about suspending the guest
@ 2015-03-27  6:04 Wen Congyang
  2015-03-27 10:31 ` Ian Campbell
  0 siblings, 1 reply; 2+ messages in thread
From: Wen Congyang @ 2015-03-27  6:04 UTC (permalink / raw)
  To: xen devel

When I test COLO, I find that suspending the primay guest will fail.

static void domain_suspend_common_wait_guest(libxl__egc *egc,
                                             libxl__domain_suspend_state2 *dss2)
{
    STATE_AO_GC(dss2->ao);
    int rc;

    LOG(DEBUG, "wait for the guest to suspend");

    rc = libxl__ev_xswatch_register(gc, &dss2->guest_watch,
                                    suspend_common_wait_guest_watch,
                                    "@releaseDomain");
    if (rc) goto err;

    rc = libxl__ev_time_register_rel(gc, &dss2->guest_timeout,
                                     suspend_common_wait_guest_timeout,
                                     60*1000);
    if (rc) goto err;
    return;

 err:
    domain_suspend_common_failed(egc, dss2);
}

suspend_common_wait_guest_watch() is not called and timeout. I don't know
who will wake up this watch.

Thanks
Wen Congyang

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: question about suspending the guest
  2015-03-27  6:04 question about suspending the guest Wen Congyang
@ 2015-03-27 10:31 ` Ian Campbell
  0 siblings, 0 replies; 2+ messages in thread
From: Ian Campbell @ 2015-03-27 10:31 UTC (permalink / raw)
  To: Wen Congyang; +Cc: xen devel

On Fri, 2015-03-27 at 14:04 +0800, Wen Congyang wrote:
> When I test COLO, I find that suspending the primay guest will fail.
> 
> static void domain_suspend_common_wait_guest(libxl__egc *egc,
>                                              libxl__domain_suspend_state2 *dss2)
> {
>     STATE_AO_GC(dss2->ao);
>     int rc;
> 
>     LOG(DEBUG, "wait for the guest to suspend");
> 
>     rc = libxl__ev_xswatch_register(gc, &dss2->guest_watch,
>                                     suspend_common_wait_guest_watch,
>                                     "@releaseDomain");
>     if (rc) goto err;
> 
>     rc = libxl__ev_time_register_rel(gc, &dss2->guest_timeout,
>                                      suspend_common_wait_guest_timeout,
>                                      60*1000);
>     if (rc) goto err;
>     return;
> 
>  err:
>     domain_suspend_common_failed(egc, dss2);
> }
> 
> suspend_common_wait_guest_watch() is not called and timeout. I don't know
> who will wake up this watch.

Any watch on @releaseDomain should be fired by xenstored whenever a
domain is destroyed. xenstored is notified of such events by the
hypervisor via VIRQ_DOM_EXC.

If the watch is not firing then either the domain is not suspending in a
timely manner (i.e. it takes longer than 60 seconds, or never happens at
all) or something else is wrong with your configuration.

Ian.

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2015-03-27 10:31 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-03-27  6:04 question about suspending the guest Wen Congyang
2015-03-27 10:31 ` Ian Campbell

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.