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

Re: [Xen-devel] Cancelling asynchronous operations in libxl

Euan Harris writes ("Re: Cancelling asynchronous operations in libxl"):
> On Tue, Jan 20, 2015 at 04:38:24PM +0000, Ian Jackson wrote:
> >  * Is an API along these lines going to meet your needs ?
> The API you propose for libxl_ao_cancel, as described in the comment in
> libxl.h, looks reasonable to us.    The comment for ERROR_NOTIMPLEMENTED
> is a bit confusing: under what circumstances might a task actually be
> cancelled although libxl_ao_cancel returned ERROR_NOTIMPLEMENTED?

A single operation may go through phases during which cancellation is
effective, and phases during which it is not very effective because it
hasn't been properly hooked up.  If libxl_ao_cancel is called during
the latter, it will return ERROR_NOTIMPLEMENTED but the operation will
still be marked as wanting-cancellation, so if it enters a phase where
cancellation is effective, it will stop at that point.

To put it another way, what libxl_ao_cancel does is:
  - find the ao in question, hopefully
  - make a note in the ao that it ought to be cancelled
  - look for something internal that has registered a
     cancellation hook
  - if such a hook was found, call it and return success;
     otherwise return ERROR_NOTIMPLEMENTED.

So ERROR_NOTIMPLEMENTED is more of a hint.

If you prefer, it would be possible to make libxl_ao_cancel _not_ make
a note that the operation ought to be cancelled, in the case where
it's returning ERROR_NOTIMPLEMENTED.  Then the libxl_ao_cancel would
be guaranteed to have no effect.

But, if we do that, it won't be possible to mark a
currently-running-and-not-promptly-cancellable but
maybe-shortly-actually-cancellable operation as to be cancelled.

Perhaps if this is confusing the better answer is simply to return a
different error code instead of ERROR_NOTIMPLEMENTED,

> >  * Can you help me test it ?  Trying to test this in xl is going to be
> >    awkward and involve a lot of extraneous and very complicated signal
> >    handling; and AFAIAA libvirt doesn't have any cancellation
> >    facility.
> Yes, of course.   However, wouldn't it also be useful for xl to gain
> the ability to cancel long-running operations by handling SIGINT?

As I say, making xl do something with signals is a substantial piece
of work in itself.

> >  * Any further comments (eg, re timescales etc).
> None that we can think of at the moment.


Xen-devel mailing list



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