[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] xenstore tools -s option behaviour
Hi, I was investigating the behaviour of the -s option and I'm not sure if the behaviour of xs_open() is exactly as intended. In my case I am running xenstored in the dom0. Running a strace on xenstore-read with/without the -s option shows the tool always using xenstore socket. The flag which the -s option toggles suggests that it is supposed to force use of the socket over the xenbus device when both are available. socket is 0 by default, -s sets socket = 1 xsh = xs_open(socket ? XS_OPEN_SOCKETONLY : 0); struct xs_handle *xs_open(unsigned long flags) { struct xs_handle *xsh = NULL; if (flags & XS_OPEN_READONLY) xsh = get_handle(xs_daemon_socket_ro()); else xsh = get_handle(xs_daemon_socket()); /* regardles of the state of XS_OPEN_SOCKET_ONLY xsh will be set when the socket is available */ if (!xsh && !(flags & XS_OPEN_SOCKETONLY)) xsh = get_handle(xs_domain_dev()); if (xsh && (flags & XS_UNWATCH_FILTER)) xsh->unwatch_filter = true; return xsh; } Should the correct behaviour be to use xs_domain_dev() when XS_OPEN_SOCKET_ONLY is not set and only use xs_daemon_socket() when it is? The conditions are slightly complicated by the availability of xs_daemon_socket_ro(). I am working with this version of xs_open() where we want to prefer the device unless -s is used. struct xs_handle *xs_open(unsigned long flags) { struct xs_handle *xsh = NULL; if (flags & XS_OPEN_READONLY) { xsh = get_handle(xs_daemon_socket_ro()); } else if (flags & XS_OPEN_SOCKETONLY) { xsh = get_handle(xs_daemon_socket()); } else { xsh = get_handle(xs_domain_dev()); } if (xsh && (flags & XS_UNWATCH_FILTER)) xsh->unwatch_filter = true; return xsh; } I did the original analysis in 4.4 but the 4.6 code seems to be the same. Thanks, James _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |