[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH 17/29] libxl: cancellation: Provide public ao cancellation API



On Tue, 2015-03-31 at 19:33 +0100, Ian Jackson wrote:
> Ian Campbell writes ("Re: [Xen-devel] [PATCH 17/29] libxl: cancellation: 
> Provide public ao cancellation API"):
> > On Tue, 2015-02-10 at 20:10 +0000, Ian Jackson wrote:
> > > +    /*
> > > +     * For nested aos:
> > > +     *  Semantically, cancellation affects the whole tree of aos,
> > > +     *    not just the parent.
> > > +     *  libxl__ao_cancellable.ao refers to the child, so
> > > +     *    that the child callback sees the right ao.  (After all,
> > > +     *    it was code dealing with the child that set .ao.)
> > > +     *  But, the cancellable is recorded on the "cancellables" list
> > > +     *    for the ultimate root ao, so that every possible child
> > > +     *    cancellation occurs as a result of the cancellation of the
> > > +     *    parent.
> > > +     *  We set ao->cancelling only in the root.
> > > +     */
> > 
> > WRT this, given a tree of ao's, which ones need to be cancellable for a
> > cancellation to succeed? I would assume all of them do, or else the
> > cancellation can only occur if/when the non-cancellable ones happen to
> > end?
> 
> It depends what you mean by `succeed'.  libxl_ao_cancel reports
> success if it did something.  That is, if anyone was listening.  For
> this purpose, with a tree of ao's, it is sufficient for any one of the
> children to have registered a cancellable.

Right, and this "only at least one, not all" semantic is what leads to
the "It will be cut short.  However, it may still take some time to
cancel." wording elsewhere since for the cancellation to "complete" all
of the non-cancellable things would need to finish too, but we expect
that would happen sooner if any one thing in the tree was cancelled than
if not.

> > Do we(/are we going to) take steps to stop new non-cancellable ao's to
> > the tree once the root is cancelled?
> 
> Yes.  Individual callback setups, and operations, can check by calling
> libxl__ao_cancelling.  Normally this is done by
> libxl__ao_cancellable_register: it is not possible to register a new
> cancellable for an ao which we are supposed to be cancelling.
> 
> This affects, for example, libxl__ev_time_register_*.

Great.

Acked-by: Ian Campbell <ian.campbell@xxxxxxxxxx>

Ian.


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

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