Index: xs_internal.c
===================================================================
RCS file: /data/cvs/libvirt/src/xs_internal.c,v
retrieving revision 1.58
diff -u -p -r1.58 xs_internal.c
--- xs_internal.c	5 Dec 2007 21:40:15 -0000	1.58
+++ xs_internal.c	14 Dec 2007 07:24:03 -0000
@@ -920,23 +920,43 @@ xenStoreDomainGetDiskID(virConnectPtr co
 
     snprintf(dir, sizeof(dir), "/local/domain/0/backend/vbd/%d", id);
     list = xs_directory(priv->xshandle, 0, dir, &num);
-    if (list == NULL)
-        return(NULL);
-    for (i = 0; i < num; i++) {
-        snprintf(path, sizeof(path), "%s/%s/%s", dir, list[i], "dev");
-        val = xs_read(priv->xshandle, 0, path, &len);
-        if (val == NULL)
-            break;
-        if ((devlen != len) || memcmp(val, dev, len)) {
-            free(val);
-        } else {
-            ret = strdup(list[i]);
-            free(val);
-            break;
+    if (list != NULL) {
+        for (i = 0; i < num; i++) {
+            snprintf(path, sizeof(path), "%s/%s/%s", dir, list[i], "dev");
+            val = xs_read(priv->xshandle, 0, path, &len);
+            if (val == NULL)
+                break;
+            if ((devlen != len) || memcmp(val, dev, len)) {
+                free (val);
+            } else {
+                ret = strdup(list[i]);
+                free (val);
+                free (list);
+                return (ret);
+            }
+        }
+        free (list);
+    }
+    snprintf(dir, sizeof(dir), "/local/domain/0/backend/tap/%d", id);
+    list = xs_directory(priv->xshandle, 0, dir, &num);
+    if (list != NULL) {
+        for (i = 0; i < num; i++) {
+            snprintf(path, sizeof(path), "%s/%s/%s", dir, list[i], "dev");
+            val = xs_read(priv->xshandle, 0, path, &len);
+            if (val == NULL)
+                break;
+            if ((devlen != len) || memcmp(val, dev, len)) {
+                free (val);
+            } else {
+                ret = strdup(list[i]);
+                free (val);
+                free (list);
+                return (ret);
+            }
         }
+        free (list);
     }
-    free(list);
-    return(ret);
+    return (NULL);
 }
 
 char *xenStoreDomainGetName(virConnectPtr conn,
Index: xs_internal.h
===================================================================
RCS file: /data/cvs/libvirt/src/xs_internal.h,v
retrieving revision 1.14
diff -u -p -r1.14 xs_internal.h
--- xs_internal.h	5 Dec 2007 18:28:05 -0000	1.14
+++ xs_internal.h	14 Dec 2007 07:24:03 -0000
@@ -53,7 +53,7 @@ char *		xenStoreDomainGetNetworkID(virCo
 					 const char *mac);
 char *		xenStoreDomainGetDiskID(virConnectPtr conn,
 					 int id,
-					 const char *mac);
+					 const char *dev);
 char *          xenStoreDomainGetName(virConnectPtr conn,
 				      int id);
 
