2008-11-21 15:32:50 +01:00
|
|
|
Index: libvirt-0.4.6/src/xend_internal.c
|
|
|
|
===================================================================
|
|
|
|
--- libvirt-0.4.6.orig/src/xend_internal.c
|
|
|
|
+++ libvirt-0.4.6/src/xend_internal.c
|
2008-11-24 20:51:38 +01:00
|
|
|
@@ -5615,11 +5615,16 @@ virDomainXMLDevID(virDomainPtr domain,
|
2008-11-21 15:32:50 +01:00
|
|
|
char *xref;
|
|
|
|
|
|
|
|
if (dev->type == VIR_DOMAIN_DEVICE_DISK) {
|
|
|
|
- strcpy(class, "vbd");
|
|
|
|
if (dev->data.disk->dst == NULL)
|
|
|
|
return -1;
|
|
|
|
+
|
2008-11-24 20:51:38 +01:00
|
|
|
+ if (dev->data.disk->driverName &&
|
|
|
|
+ (strcasecmp(dev->data.disk->driverName, "tap") == 0))
|
2008-11-21 15:32:50 +01:00
|
|
|
+ strcpy(class, "tap");
|
|
|
|
+ else
|
|
|
|
+ strcpy(class, "vbd");
|
|
|
|
xref = xenStoreDomainGetDiskID(domain->conn, domain->id,
|
|
|
|
- dev->data.disk->dst);
|
|
|
|
+ dev->data.disk->dst, class);
|
|
|
|
if (xref == NULL)
|
|
|
|
return -1;
|
|
|
|
|
|
|
|
Index: libvirt-0.4.6/src/xs_internal.c
|
|
|
|
===================================================================
|
|
|
|
--- libvirt-0.4.6.orig/src/xs_internal.c
|
|
|
|
+++ libvirt-0.4.6/src/xs_internal.c
|
|
|
|
@@ -868,7 +868,8 @@ xenStoreDomainGetNetworkID(virConnectPtr
|
|
|
|
* freed by the caller.
|
|
|
|
*/
|
|
|
|
char *
|
|
|
|
-xenStoreDomainGetDiskID(virConnectPtr conn, int id, const char *dev) {
|
|
|
|
+xenStoreDomainGetDiskID(virConnectPtr conn, int id,
|
|
|
|
+ const char *dev, const char *class) {
|
|
|
|
char dir[80], path[128], **list = NULL, *val = NULL;
|
|
|
|
unsigned int devlen, len, i, num;
|
|
|
|
char *ret = NULL;
|
|
|
|
@@ -886,7 +887,7 @@ xenStoreDomainGetDiskID(virConnectPtr co
|
|
|
|
if (devlen <= 0)
|
|
|
|
return (NULL);
|
|
|
|
|
|
|
|
- snprintf(dir, sizeof(dir), "/local/domain/0/backend/vbd/%d", id);
|
|
|
|
+ snprintf(dir, sizeof(dir), "/local/domain/0/backend/%s/%d", class, id);
|
|
|
|
list = xs_directory(priv->xshandle, 0, dir, &num);
|
|
|
|
if (list != NULL) {
|
|
|
|
for (i = 0; i < num; i++) {
|
|
|
|
Index: libvirt-0.4.6/src/xs_internal.h
|
|
|
|
===================================================================
|
|
|
|
--- libvirt-0.4.6.orig/src/xs_internal.h
|
|
|
|
+++ libvirt-0.4.6/src/xs_internal.h
|
|
|
|
@@ -49,7 +49,8 @@ char * xenStoreDomainGetNetworkID(virCo
|
|
|
|
const char *mac);
|
|
|
|
char * xenStoreDomainGetDiskID(virConnectPtr conn,
|
|
|
|
int id,
|
|
|
|
- const char *dev);
|
|
|
|
+ const char *dev,
|
|
|
|
+ const char *class);
|
|
|
|
char * xenStoreDomainGetName(virConnectPtr conn,
|
|
|
|
int id);
|
|
|
|
|