WARNING - OLD ARCHIVES

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

xen-changelog

[Xen-changelog] Get rid of xenbus_uuid_to_domid - get the frontend id fr

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] Get rid of xenbus_uuid_to_domid - get the frontend id from the node.
From: Xen patchbot -unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Thu, 18 Aug 2005 15:42:15 -0400
Delivery-date: Thu, 18 Aug 2005 19:43:17 +0000
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User cl349@xxxxxxxxxxxxxxxxxxxx
# Node ID a028975ecc05cd4d14e7bc568d16cc4b8d48c47a
# Parent  b0893b876c8c4c4eb507d48fc1c4af4268ddecde
Get rid of xenbus_uuid_to_domid - get the frontend id from the node.
We don't want to parse paths we read out of the store to _construct_
other paths and tie down the store layout for no good reason.
Also require the frontend path to exist and be valid before creating
the device.
Signed-off-by: Christian Limpach <Christian.Limpach@xxxxxxxxxxxx>

diff -r b0893b876c8c -r a028975ecc05 
linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_probe.c
--- a/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_probe.c    Thu Aug 18 
19:15:22 2005
+++ b/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_probe.c    Thu Aug 18 
19:21:09 2005
@@ -109,47 +109,41 @@
        },
 };
 
-/* For backends, does lookup on uuid (up to /).  Returns domid, or -errno. */
-int xenbus_uuid_to_domid(const char *uuid)
-{
-       int err, domid, len;
-       char path[strlen("/domain/") + 50];
-
-       len = strcspn(uuid, "/");
-       if (snprintf(path, sizeof(path), "/domain/%.*s", len, uuid)
-           >= sizeof(path))
-               return -ENOSPC;
-       err = xenbus_scanf(path, "id", "%i", &domid);
-       if (err != 1)
-               return err;
-       return domid;
-}
-
 /* backend/<type>/<fe-uuid>/<id> => <type>-<fe-domid>-<id> */
 static int backend_bus_id(char bus_id[BUS_ID_SIZE], const char *nodename)
 {
-       unsigned int typelen, uuidlen;
-       int domid;
-       const char *p;
-
-       nodename = strchr(nodename, '/');
-       if (!nodename)
+       int domid, err;
+       const char *devid, *type, *frontend;
+       unsigned int typelen;
+
+       type = strchr(nodename, '/');
+       if (!type)
                return -EINVAL;
-       nodename++;
-       typelen = strcspn(nodename, "/");
-       if (!typelen || nodename[typelen] != '/')
+       type++;
+       typelen = strcspn(type, "/");
+       if (!typelen || type[typelen] != '/')
                return -EINVAL;
-       p = nodename + typelen + 1;
-       uuidlen = strcspn(p, "/");
-       if (!uuidlen || p[uuidlen] != '/')
-               return -EINVAL;
-       domid = xenbus_uuid_to_domid(p);
-       if (domid < 0)
-               return domid;
-       p += uuidlen + 1;
+
+       devid = strrchr(nodename, '/') + 1;
+
+       err = xenbus_gather(nodename, "frontend-id", "%i", &domid,
+                           "frontend", NULL, &frontend,
+                           NULL);
+       if (err)
+               return err;
+       if (strlen(frontend) == 0)
+               err = -ERANGE;
+
+       if (!err && !xenbus_exists(frontend, ""))
+               err = -ENOENT;
+
+       if (err) {
+               kfree(frontend);
+               return err;
+       }
 
        if (snprintf(bus_id, BUS_ID_SIZE,
-                    "%.*s-%i-%s", typelen, nodename, domid, p) >= BUS_ID_SIZE)
+                    "%.*s-%i-%s", typelen, type, domid, devid) >= BUS_ID_SIZE)
                return -ENOSPC;
        return 0;
 }
diff -r b0893b876c8c -r a028975ecc05 
linux-2.6-xen-sparse/include/asm-xen/xenbus.h
--- a/linux-2.6-xen-sparse/include/asm-xen/xenbus.h     Thu Aug 18 19:15:22 2005
+++ b/linux-2.6-xen-sparse/include/asm-xen/xenbus.h     Thu Aug 18 19:21:09 2005
@@ -126,9 +126,6 @@
 void unregister_xenbus_watch(struct xenbus_watch *watch);
 void reregister_xenbus_watches(void);
 
-/* For backends, does lookup on uuid (up to /).  Returns domid, or -errno. */
-int xenbus_uuid_to_domid(const char *uuid);
-
 /* Called from xen core code. */
 void xenbus_suspend(void);
 void xenbus_resume(void);

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

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] Get rid of xenbus_uuid_to_domid - get the frontend id from the node., Xen patchbot -unstable <=