|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 1/3] libxl: ao: allow immediate completion
Ian Campbell writes ("Re: [Xen-devel] [PATCH 1/3] libxl: ao: allow immediate
completion"):
> On Fri, 2012-02-17 at 18:43 +0000, Ian Jackson wrote:
> > - assert(ao->in_initiator);
> > + assert(ao->constructing && ao->in_initiator);
>
> Doing two asserts will make it clearer which condition is not satisfied
> if we ever see this.
Good point. I was foolishly thinking of bitfield optimisations but
this code is not a hot path.
> > - AO_GC;
> > + EGC_INIT(ctx);
>
> This means that the "gc" within a function which uses this macro is now
> "&egc->gc" rather than "&ao->gc".
You are right, and this is wrong.
> Another difference is that any function calling AO_CREATE cannot now be
> called from within libxl, since it now calls LIBXL__INIT_EGC which has
> this restriction. libxl_cdrom_insert does not obey this new restriction.
This restriction is not new. libxl_cdrom_insert has always violated
it and needs converting to the new scheme of things.
The restriction is documented here in libxl_internal.h but sadly has a
"outside" when it should say "inside":
* All "slow" functions (includes anything that might block on a
* guest or an external script) need to use the asynchronous
* operation ("ao") machinery. The function should take a parameter
* const libxl_asyncop_how *ao_how and must start with a call to
* AO_INITIATOR_ENTRY. These functions MAY NOT be called from
* outside libxl, because they can cause reentrancy callbacks.
In practice I think libxl_cdrom_insert will not mind the reentrancy so
the bug is latent. It doesn't take out the ctx lock, and although a
callback might involve messing with the same device there is no
difference between that and another process doing the same.
Ian.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |