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/
Home Products Support Community News


[Xen-devel] [PATCH 9/24] [xen-unstable.hg] make xs_domain_open fallback

To: "xen-devel@xxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxx>
Subject: [Xen-devel] [PATCH 9/24] [xen-unstable.hg] make xs_domain_open fallback to /proc/xen/xenbus if unix domain socket fails because xenstore is in a stubdomain
From: Alex Zeffertt <alex.zeffertt@xxxxxxxxxxxxx>
Date: Mon, 23 Mar 2009 15:20:57 +0000
Delivery-date: Mon, 23 Mar 2009 08:30:11 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
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/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Thunderbird (X11/20090105)

If xenstored is running in a stub domain clients won't be able to open
a unix domain socket to it, but will be able to access it via xenbus.

To handle this situation this patch makes xs_daemon_open() fall back to
xs_domain_open() - which tries to open a connection via xenbus - if it
cannot open a unix domain socket.

Depends on linux xenbus commands whitelist patch. Enhanced by linux
xenbus aborting read/write if not ready, part of my big linux xenbus

I wasn't so sure what to do about the read-only connection, but I made
it fall back to the non-read-only socket/device if the read-only socket
isn't available.

Signed-off-by: Diego Ongaro <diego.ongaro@xxxxxxxxxx>
Signed-off-by: Alex Zeffertt <alex.zeffertt@xxxxxxxxxxxxx>

diff -r 5308892be11a tools/xenstore/xs.c
--- a/tools/xenstore/xs.c       Thu Mar 19 12:47:06 2009 +0000
+++ b/tools/xenstore/xs.c       Thu Mar 19 16:10:07 2009 +0000
@@ -210,12 +210,25 @@
 struct xs_handle *xs_daemon_open(void)
-       return get_handle(xs_daemon_socket());
+       struct xs_handle *xsh;
+       xsh = get_handle(xs_daemon_socket());
+       if (xsh != NULL)
+               return xsh;
+       return xs_domain_open();
 struct xs_handle *xs_daemon_open_readonly(void)
-       return get_handle(xs_daemon_socket_ro());
+       struct xs_handle *xsh;
+       xsh = get_handle(xs_daemon_socket_ro());
+       if (xsh != NULL)
+               return xsh;
+       /* fall back to a read-write connection */
+       return xs_daemon_open();
 struct xs_handle *xs_domain_open(void)
diff -r 5308892be11a tools/xenstore/xs.h
--- a/tools/xenstore/xs.h       Thu Mar 19 12:47:06 2009 +0000
+++ b/tools/xenstore/xs.h       Thu Mar 19 16:10:07 2009 +0000
@@ -37,6 +37,7 @@
 /* Connect to the xs daemon (readonly for non-root clients).
  * Returns a handle or NULL.
+ * Note: this may fall back to a read/write connection.
 struct xs_handle *xs_daemon_open_readonly(void);

Xen-devel mailing list
<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-devel] [PATCH 9/24] [xen-unstable.hg] make xs_domain_open fallback to /proc/xen/xenbus if unix domain socket fails because xenstore is in a stubdomain, Alex Zeffertt <=