[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 24/24] libxl: aborting bootloader invocation when domain dioes
> diff --git a/tools/libxl/libxl_event.c b/tools/libxl/libxl_event.c > index 991f16e..e43aedc 100644 > --- a/tools/libxl/libxl_event.c > +++ b/tools/libxl/libxl_event.c > @@ -585,6 +585,37 @@ int libxl__ev_devstate_wait(libxl__gc *gc, > libxl__ev_devstate *ds, > } > > /* > + * domain death/destruction > + */ > + > +static void domaindeathcheck_callback(libxl__egc *egc, libxl__ev_xswatch *w, > + const char *watch_path, const char *event_path) > +{ > + libxl__domaindeathcheck *dc = CONTAINER_OF(w, *dc, watch); > + EGC_GC; > + const char *p = libxl__xs_read(gc, XBT_NULL, watch_path); > + if (p) return; > + > + if (errno!=ENOENT) { > + LIBXL__EVENT_DISASTER(egc,"failed to read xenstore" > + " for domain deatch check", errno, 0); detach > + return; > + } > + > + LOG(ERROR,"%s: domain %"PRIu32" removed (%s no longer in xenstore)", > + dc->what, dc->domid, watch_path); > + dc->callback(egc, dc); > +} > + > +int libxl__domaindeathcheck_start(libxl__gc *gc, > + libxl__domaindeathcheck *dc) > +{ > + const char *path = GCSPRINTF("/local/domain/%"PRIu32, dc->domid); > + return libxl__ev_xswatch_register(gc, &dc->watch, > + domaindeathcheck_callback, path); So we are watching for the toolstack (possibly the same one as we are running in) to destroy the domain and therefore nuke the xs directory -- does that actually work? Specifically in the case of xl running the bootloader -- is xl in any position to handle a domain death during domain build? Isn't it doing the create synchronously? (note, I'm not actually 100% sure what might be wrong with this, it just strikes me as odd...) Wouldn't using the @releaseDomain watch be more reliable? Ian. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |