[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



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.

> 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_*.

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®.