|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 15/19] libxl: suspend: Async xenstore pvcontrol wait
Ian Campbell writes ("Re: [PATCH 15/19] libxl: suspend: Async xenstore
pvcontrol wait"):
> On Tue, 2014-03-04 at 14:56 +0000, Ian Jackson wrote:
> > When negotiating guest suspend via the xenstore pvcontrol protocol
> > (ie when the guest does NOT support the evtchn fast suspend protocol):
...
> > - /*
> > - * Final check for guest acknowledgement. The guest may have
> > - * acknowledged while we were cancelling the request in which
> > - * case we lost the race while cancelling and should continue.
>
> This behaviour has gone completely now?
No, this possibility still exists. This is handled by the rc ==
ERROR_TIMEDOUT branch in domain_suspend_common_pvcontrol_suspending.
The comment there (now) reads:
/*
* Guest appears to not be responding. Cancel the suspend
* request.
*
* We re-read the suspend node and clear it within a
* transaction in order to handle the case where we race
* against the guest catching up and acknowledging the request
* at the last minute.
*/
> > + assert(domain_suspend_pvcontrol_acked(state));
> > LOG(DEBUG, "guest acknowledged suspend request");
> > +
> > + libxl__xs_transaction_abort(gc, &t);
>
> Is this right/proper in the success case?
Yes. Because it has then already been committed. This is exactly the
pattern from the usage comment for libxl__xs_transaction_* in
libxl_internal.h.
> If rc != TIMEOUT t may not have been started, although it is initialised
> so I suppose this is intended to be ok.
Yes. Precisely.
Thanks for the careful review :-).
Ian.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |