[libvirt] [Xen-devel] [PATCH V2] libxl: Set path to console on domain startup.
Ian Jackson
Ian.Jackson at eu.citrix.com
Tue Dec 16 12:36:53 UTC 2014
Anthony PERARD writes ("Re: [Xen-devel] [PATCH V2] libxl: Set path to console on domain startup."):
> On Tue, Dec 16, 2014 at 09:30:28AM +0000, Ian Campbell wrote:
> > Unless by "not running" you meant bottlenecked or not keeping up
> > perhaps.
>
> Well, I did meant no xenconsoled process. But after, I also tried `kill
> -STOP`, but the same things is happening.
I think this is a bug. I imagine that you can cause `xl create -c' to
malfunction too.
> > > Or, should I set the callback to NULL and have the
> > > domain_create_console_available event sent through
> > > the callback set by libxl_event_register_callbacks()?
> >
> > That would make sense, except I don't see libxl_evdisable_foo for these
> > events, so I'm not sure it is possible.
>
> Well, the domain_create_console_available event is report by
> libxl__ao_progress_report which will either callback() or call
> libxl__event_occurred(). So does not seams better to set callback to
> NULL.
The console available notification is only available via the ao
progress mechanism. So you have to pass a non-NULL aop_console_how,
and the notification will always be generated during the create.
Your options for having the notification delivered are:
I. aop_console_how->callback != NULL:
libxl will call
aop_console_how->callback(aop_console_how->for_callback)
II. aop_console_how->callback == NULL:
libxl will construct an libxl_event *event with
event->domid = the domid of the domain being constructed
event->domuuid = its uuid
event->for_user = aop_console_how->for_event
event->type = LIBXL_EVENT_TYPE_DOMAIN_CREATE_CONSOLE_AVAILABLE
What happens to that event depends on whether and how
libxl_event_register_callbacks has been called.
II(a): If libxl_event_register_callbacks(,hooks,user) was called
and also the bit is set ie
!!(hooks->event_occurs_mask
& (1UL << LIBXL_EVENT_TYPE_DOMAIN_CREATE_CONSOLE_AVAILABLE)):
libxl will call
hooks->event_occurs(user,event)
II(b): If libxl_event_register_callbacks(,hooks,user) was NOT called
or if the bit is clear:
libxl will queue the event for retrieval by libxl_event_check
or libxl_event-wait. (And if the application doesn't call those,
the application will never be notified; the event will be
retained until the libxl ctx is destroyed and then discarded.)
I mention all of these for completeness, and for future reference for
anyone reading the archives later.
In libxl you want option I.
Ian.
More information about the libvir-list
mailing list