| 
    
 [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  |