[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] xend: notify xenpv device model that console info is ready
Hi, I don't have the confidence to resolve the race condition quickly since the xend is so complex. Solutions come to my mind are: 1) XendDomainInfo.py: exchange the exec order of _createDevices() from _initDomain() and _storeDomDetails() 2) XendDomainInfo.py: don't spawn qemu-dm until _storeDomDetails() But they both give much influences and there are many places to be fixed. Another solution is to fix the qemu-dm. It might be better, though, I think that the interface between qemu-dm and xend shouldn't be changed. So, I push this patch. It's simple and sure to fix the issue. Thanks, Kouya Konrad Rzeszutek Wilk writes: > On Tue, Feb 23, 2010 at 04:03:48PM +0900, Kouya Shimura wrote: > Content-Description: message body text > > Sometimes PV domain with vfb doesn't boot up. /sbin/kudzu is stuck. > > After investigation, I've found that the evtchn for console is not > > bound at all. > > > > Normal sequence of evtchn initialization in qemu-dm for xenpv is: > > 1) watch xenstore backpath (/local/domain/0/backend/console/<domid>/0) > > 2) read console info (/local/domain/<domid>/console/{type, ring-ref, > > port..}) > > 3) bind the evtchn to the port. > > > > But in some case, xend writes to the backpath before the console info > > Would it be better to fix the race condition? > > > is prepared, and never write to the backpath again. So the qemu-dm fails > > at 2) and never reach to 3). > > > > When this happens, manually xenstore-write command on Domain-0 > > resumes the guest. > > > > Signed-off-by: Kouya Shimura <kouya@xxxxxxxxxxxxxx> > > > > > diff -r 4ba4323889b9 tools/python/xen/xend/XendDomainInfo.py > > --- a/tools/python/xen/xend/XendDomainInfo.py Mon Feb 22 18:47:22 > > 2010 +0000 > > +++ b/tools/python/xen/xend/XendDomainInfo.py Tue Feb 23 14:50:40 > > 2010 +0900 > > @@ -1642,6 +1642,11 @@ class XendDomainInfo: > > console_uuid = serial_consoles[0].get('uuid') > > self.info.console_update(console_uuid, 'location', > > self.console_port) > > + # Notify xenpv device model that console info is ready > > + if not self.info.is_hvm() and self.info.has_rfb(): > > + console_ctrl = self.getDeviceController('console') > > + # The value is unchanged. Just for xenstore watcher > > + console_ctrl.writeBackend(0, 'uuid', console_uuid) > > > > > > # Update VNC port if it exists and write to xenstore > > > _______________________________________________ > > Xen-devel mailing list > > Xen-devel@xxxxxxxxxxxxxxxxxxx > > http://lists.xensource.com/xen-devel _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |