libvirt/detach-disk.patch

51 lines
2.2 KiB
Diff

Index: libvirt-0.7.2/src/xen/xend_internal.c
===================================================================
--- libvirt-0.7.2.orig/src/xen/xend_internal.c
+++ libvirt-0.7.2/src/xen/xend_internal.c
@@ -5896,7 +5896,7 @@ virDomainXMLDevID(virDomainPtr domain,
return -1;
xenUnifiedLock(priv);
xref = xenStoreDomainGetDiskID(domain->conn, domain->id,
- dev->data.disk->dst);
+ dev->data.disk->dst, class);
xenUnifiedUnlock(priv);
if (xref == NULL)
return -1;
Index: libvirt-0.7.2/src/xen/xs_internal.c
===================================================================
--- libvirt-0.7.2.orig/src/xen/xs_internal.c
+++ libvirt-0.7.2/src/xen/xs_internal.c
@@ -968,7 +968,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;
@@ -986,7 +987,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.7.2/src/xen/xs_internal.h
===================================================================
--- libvirt-0.7.2.orig/src/xen/xs_internal.h
+++ libvirt-0.7.2/src/xen/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);
int xenStoreDomainGetUUID(virConnectPtr conn,