[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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.