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] Why xs_domain_open() in fs_backend

To: "samuel.thibault@xxxxxxxxxxxxx" <samuel.thibault@xxxxxxxxxxxxx>, "gm281@xxxxxxxxx" <gm281@xxxxxxxxx>
Subject: [Xen-devel] Why xs_domain_open() in fs_backend
From: "Jiang, Yunhong" <yunhong.jiang@xxxxxxxxx>
Date: Wed, 13 Oct 2010 15:19:42 +0800
Accept-language: en-US
Acceptlanguage: en-US
Cc: "xen-devel@xxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxx>
Delivery-date: Wed, 13 Oct 2010 00:22:54 -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
Thread-index: ActqpwELtQ8kBqU3SkCQGJmzWz9EEA==
Thread-topic: Why xs_domain_open() in fs_backend
I always get error on fs-backend when I was trying the stubdomain. The error is 
either " fs-backend: xenbus_get_watch_fd: could not setup watch: Invalid 
argument" or "fs-backend: xenbus_get_watch_fd: could not setup watch: Bad file 

I tried to debug it, seems it failed when fs-backend access the 
/proc/xen/xenbus file to setup a watch. It failed either because write the file 
failed or read the reply back failed. Further investigation does not make much 
progress. (I'm using PVops dom0 and latest upstream xen).

Later I noticed that the fs-backend utilize xs_domain_open(), instead of 
xs_daemon_open(), to communicate with xenstore. grep "xs_domain_open", I 
noticed it is in fact only used in xenstore_client.c, (xl use it when 
xs_daemon_open failed, but I suspect if it is really tested), and the 
xenstore_client.c does not use watch feature at all.

Following simple patch make it work, but I'm not sure if it is the right 
method, will fs-backend run in other domain?


diff -r a33886146b45 tools/fs-back/fs-backend.c
--- a/tools/fs-back/fs-backend.c    Fri Oct 08 11:41:57 2010 +0100
+++ b/tools/fs-back/fs-backend.c    Wed Oct 13 15:10:22 2010 +0800
@@ -462,7 +462,7 @@ int main(void)
     sigaction(SIGUSR2, &act, NULL);

     /* Open the connection to XenStore first */
-    xsh = xs_domain_open();
+    xsh = xs_daemon_open();
     assert(xsh != NULL);
     xs_rm(xsh, XBT_NULL, ROOT_NODE);
     /* Create watch node */
diff -r a33886146b45 tools/fs-back/fs-backend.h
--- a/tools/fs-back/fs-backend.h    Fri Oct 08 11:41:57 2010 +0100
+++ b/tools/fs-back/fs-backend.h    Wed Oct 13 15:10:33 2010 +0800
@@ -9,7 +9,7 @@
 #include <xen/io/fsif.h>
 #include "sys-queue.h"

-#define ROOT_NODE           "backend/vfs"
+#define ROOT_NODE           "/local/domain/0/backend/vfs"
 #define EXPORTS_SUBNODE     "exports"
 #define WATCH_NODE          EXPORTS_NODE"/requests"

Xen-devel mailing list