WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

Re: [Xen-devel] Re: [RFC] "xs_read(): uuid get error" of qemu-dm

To: Masami Watanabe <masami.watanabe@xxxxxxxxxxxxxx>
Subject: Re: [Xen-devel] Re: [RFC] "xs_read(): uuid get error" of qemu-dm
From: Ewan Mellor <ewan@xxxxxxxxxxxxx>
Date: Wed, 8 Nov 2006 18:35:37 +0000
Cc: Ian Pratt <m+Ian.Pratt@xxxxxxxxxxxx>, Anthony Liguori <aliguori@xxxxxxxxxx>, xen-devel@xxxxxxxxxxxxxxxxxxx, "Daniel P. Berrange" <berrange@xxxxxxxxxx>, "Zheng, Jeff" <jeff.zheng@xxxxxxxxx>
Delivery-date: Wed, 08 Nov 2006 10:36:14 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
In-reply-to: <JN200611081513433.973218@xxxxxxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <C175F3B9.3ED1%Keir.Fraser@xxxxxxxxxxxx> <JN200611081513433.973218@xxxxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Mutt/1.5.9i
On Wed, Nov 08, 2006 at 03:13:43PM +0900, Masami Watanabe wrote:

> Hi Keir,
> 
> My explanation was insufficient.
> 
> "xs_read(): uuid get error" happens when uuid can't read from xenstore
> in xenstore_read_vncpasswd@tools/ioemu/xenstore.c.
> 
> c/s 12187 evaded this problem when the guest rebooted in a lot of
> environments. As for my environment, the problem was corrected by this
> correction.
> 
> However, Afterwards, following problem keeps happening.
> I think that it is a problem.
> 
> [Xen-devel] VMX status report 12254:f8ffeb540ec1
>   http://lists.xensource.com/archives/html/xen-devel/2006-11/msg00288.html
> [Xen-devel] VMX status report 12217:20204db0891b
>   http://lists.xensource.com/archives/html/xen-devel/2006-11/msg00183.html
> >  IA32/PAE/IA32E: Windows and Linux VMX domains may fail to be
> > created, the qemu-dm process is <defunct>, and the qemu log says
> > "xs_read(): uuid get error."
> 
> 
> I examined it.
> As a result, In the environment that allocated two or more CPU in
> Dom0, this problem was able to be caused.
> The result of the confirmation is as follows.
> - uuid cannot be read with xenstore_read_vncpasswd() in qemu-dm.
> - uuid can often be read by changing the order of vm.initDomain()
>   and vm.storeVmDetails() in create()@XendDomainInfo.py.
> - And, when the read timing is delayed in qemu-dm, It was possible
>   to always read.
> 
> >From the above, I thought that this problem was a problem of the timing
> of writing and reading to xenstore from another process.
> 
> 
> > Is the passwd getting written after qemu
> > is started and hence racing the xs_read() in xenstored?
> 
> Yes, maybe. I understand the order of processing xend as follows.
> Is it my misunderstanding ?
> 
>   create()@XendDomainInfo.py+135
>       start()
>           _initDomain()
>               _createDevices()
>                   createDeviceModel(self)@image.py
>                       os.spawnve()  ==============>  start qemu-dm process
>           _storeVmDetails()
>               _writeVm()            ==============>  write to xenstore
>               _setVmPermissions()

I've just put a patch in that ought to help.  We can't reproduce this race
here, but perhaps you could give it a try for me.

diff -r 9a43cc89ae0a tools/python/xen/xend/XendDomainInfo.py
--- a/tools/python/xen/xend/XendDomainInfo.py   Wed Nov 08 18:27:31 2006 +0000
+++ b/tools/python/xen/xend/XendDomainInfo.py   Wed Nov 08 18:08:28 2006 +0000
@@ -678,6 +678,7 @@ class XendDomainInfo:
         t.remove()
         t.mkdir()
         t.set_permissions({ 'dom' : self.domid })
+        t.write('vm', self.vmpath)

     def _storeDomDetails(self):
         to_store = {


The /vm/<uuid>/vncpasswd node is written before the call to createDeviceModel,
in configVNC, but you need the /local/domain/<domid>/vm node to be present
too, and it's this one that isn't written until after qemu-dm is started.

HTH,

Ewan.

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel