[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

> 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 :-).


Xen-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.