|
[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
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |