[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] Re: Some problem with xenstore



On Mon, Aug 1, 2011 at 9:42 PM, Daniel Castro <evil.dani@xxxxxxxxx> wrote:
> Hello All,
>
> I am having some trouble with xenstore, so any ideas to solve this
> "small" problem will be greatly appreciated.
>
> Right now the rings for xenbus connections is created but whenever I
> send anything to xenstore (XS_READ, XS_WRITE, XS_GET_PERMS or
> XS_DIRECTORY) the response is 22 if I do a XS_DEBUG I get a 13. On the
> xenstore trace log I get for example:
> IN 0x1f53050 20110801 21:15:25 GET_PERMS (/local/domain/0)
> OUT 0x1f53050 20110801 21:15:25 ERROR (EINVAL )
> IN 0x1f53050 20110801 21:15:25 DEBUG (/local/domain/0)
> OUT 0x1f53050 20110801 21:15:25 ERROR (EACCES )
> The address for the rings is correct and the response code corresponds
> to the error number.
>
> The connection works the same way as in hvmloader xenbus.c
>
> The relevant code is like this:
> char *test = "/local/domain/0";   //path to query
> char * replay_data = malloc_high(1024); //buffer for response
> memset(replay_data,0,1024);
> replay_data[1023] = '\0'; //sanity check
> int replay_len = 0; //no response yet
> ret = xenbus_send(XS_DIRECTORY,strlen(test),test,&replay_len,&replay_data);
>
> After the xenbus_send the replay_data buffer is empty.
>
> Any ideas?
>

Since nobody had any ideas I went by myself and modified the code of
xenstored_core and xenstored_domain in order to get to the bottom of
this.

I am adding lines like:
trace("error on method XX in file YY where return should be THIS: %d, error);
To the methods I am calling so far with this results:

IN 0x13c5590 20110802 21:19:39 READ (/local/domain/1/device/pci/0/state )
Got message READ len 35 from 0x13c5590
Writing msg READ (1) out to 0x13c5590 domid 16843009
OUT 0x13c5590 20110802 21:19:39 READ (1)
IN 0x13b51f0 20110802 21:19:40 GET_PERMS (/local/domain/0)
Got message GET_PERMS len 15 from 0x13b51f0
debug: get_node in core; error name or is not valid node_name: (null)
Error node does not exist
Writing msg ERROR (EINVAL) out to 0x13b51f0 domid 16843009
OUT 0x13b51f0 20110802 21:19:40 ERROR (EINVAL )
IN 0x13b51f0 20110802 21:19:40 DEBUG (/local/domain/0)
Got message DEBUG len 15 from 0x13b51f0

Two things catch my attention:
* The domid  for the operation in xenstore is incorrect. Maybe I need
to do something about that. Since this code is being run when
hvmloader is deploying the BIOS on main memory maybe I have to do
something to introduce the domain to xenstore?
* The node string for GET_PERMS is getting to be null, so either it
does not exist or is being lost in the process. Again I am trying to
get /local/domain/0 according to xenstore-ls it does exist.


In order to make this work I have to add to the init script of
xenstored the --verbose option, and the following in
/etc/defaults/xencommons:
XENCONSOLED_TRACE=all
XENSTORED_TRACE=yes
XENBACKENDD_DEBUG=yes


I will keep digging on the matter.

Daniel

_______________________________________________
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®.