All of lore.kernel.org
 help / color / mirror / Atom feed
* [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
@ 2009-03-23 15:20 Alex Zeffertt
  0 siblings, 0 replies; only message in thread
From: Alex Zeffertt @ 2009-03-23 15:20 UTC (permalink / raw)
  To: xen-devel@lists.xensource.com

[-- Attachment #1: Type: text/plain, Size: 2 bytes --]




[-- Attachment #2: libxs_fallback_domain_open --]
[-- Type: text/plain, Size: 1844 bytes --]

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
patch.

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@citrix.com>
Signed-off-by: Alex Zeffertt <alex.zeffertt@eu.citrix.com>
---

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);
 



[-- Attachment #3: Type: text/plain, Size: 138 bytes --]

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

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2009-03-23 15:20 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-03-23 15:20 [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

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.