|
[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,
ERROR_CANCELLATION_DIFFICULT
> > * 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.
Thanks,
Ian.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |