[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 9/9] libxl: Convert to asynchronous: device removal
Ian Campbell writes ("Re: [Xen-devel] [PATCH 9/9] libxl: Convert to asynchronous: device removal"): > On Fri, 2012-01-13 at 19:25 +0000, Ian Jackson wrote: > > Convert libxl_FOO_device_remove, and the function which does the bulk > > of the work, libxl__device_remove, to the new async ops scheme. ... > > After all the internal complexity the actual usage is refreshingly > simple. Phew! Yes, that was my main aim ... > > int libxl_device_disk_destroy(libxl_ctx *ctx, uint32_t domid, > > @@ -1536,11 +1540,11 @@ int libxl_cdrom_insert(libxl_ctx *ctx, uint32_t > > domid, libxl_device_disk *disk) > > out: > > The async capability here ought to be propagated to the > libxl_cdrom_insert interface too. I guess that would mean handling > compound asynchronous operations. Yes. Compound asynchronous operations are already supported by the current scheme: the code which implements them just sets up an appropriate series of callbacks. > > +int libxl__initiate_device_remove(libxl__ao *ao, libxl__device *dev) > > { > > + /* Arranges that dev will be removed from its guest. When > > + * this is done, the ao will be completed. An error > > + * return from libxl__device_remove means that the ao > > + * will _not_ be completed and the caller must do so. > > Do you mean aborted or cancelled rather than completed here? No. An ao cannot be aborted or cancelled, only completed (perhaps with an error code). I see that the comment is missing "initiate_" from the function name, which I will fix. > > diff --git a/tools/libxl/libxl_internal.h b/tools/libxl/libxl_internal.h > > index b7f0f54..9920fb9 100644 > > --- a/tools/libxl/libxl_internal.h > > +++ b/tools/libxl/libxl_internal.h > > @@ -653,35 +653,15 @@ _hidden char *libxl__device_backend_path(libxl__gc > > *gc, libxl__device *device); > [...] > > +/* Arranges that dev will be removed from its guest. When > > + * this is done, the ao will be completed. An error > > + * return from libxl__device_remove means that the ao > > + * will _not_ be completed and the caller must do so. */ > > This is the same comment as at the head of the implementation so the > same comment re aborting applies. Do we need both comments? No. The comment should be in the header file only. I'll fix this. > > - if (libxl_device_nic_remove(ctx, domid, &nic)) { > > + if (libxl_device_nic_remove(ctx, domid, &nic, 0)) { ... > > There aren't actually any examples of a caller using the ao-ness in xl > are there? No. > I know that sync is for the most part ao+wait but I'm a bit concerned > that e.g. several of the paths in libxl__ao_complete probably haven't > been run and one of the flow-charts added to tools/libxl/libxl_event.c > in patch 6/8 has probably never happened either. Yes. > IMHO this isn't a blocker for this patch but since xl is, in addition to > being a toolstack, a testbed for libxl perhaps one or more "gratuitously > asynchronous" calls could be made? Perhaps the libxl_cdrom_insert case > would be an interesting one? In particular the case in the > create_domain() event loop (e.g. so that the response to a cdrom eject > does not block shutdown processing). That would be definitely worthwhile. I'll put it (mentally) on my todo list. Ian. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |