diff --git a/ChangeLog b/ChangeLog index 2c8c750379..b9b3f9cfe5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +Fri Dec 14 16:36:02 CET 2007 Daniel Veillard + + * src/xs_internal.[ch]: patch from Saori Fukuta to fix the + detach-disk command when using Xen tap devices. + * docs/libvir.html: typo fix from Jim Meyering + Wed Dec 12 16:42:00 UTC 2007 Richard W.M. Jones Fix virBufferEscapeString escaping of '<' diff --git a/docs/libvir.html b/docs/libvir.html index f1bd743069..5320b9e769 100644 --- a/docs/libvir.html +++ b/docs/libvir.html @@ -34,7 +34,7 @@ href="http://kvm.qumranet.com/">KVM and

Here is the list of official releases, however since it is early on in the development of libvirt, it is preferable when possible to just use the CVS version or snapshot, contact the mailing list -and check the ChangeLog to gauge progresses.

+and check the ChangeLog to gauge progress.

0.3.3: Sep 30 2007

diff --git a/src/xs_internal.c b/src/xs_internal.c index 3995e3ebcf..32e1bf2384 100644 --- a/src/xs_internal.c +++ b/src/xs_internal.c @@ -920,23 +920,43 @@ xenStoreDomainGetDiskID(virConnectPtr conn, int id, const char *dev) { 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); } - free(list); - return(ret); + 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); + } + return (NULL); } char *xenStoreDomainGetName(virConnectPtr conn, diff --git a/src/xs_internal.h b/src/xs_internal.h index a17a904848..b0e7dacfd4 100644 --- a/src/xs_internal.h +++ b/src/xs_internal.h @@ -53,7 +53,7 @@ char * xenStoreDomainGetNetworkID(virConnectPtr conn, const char *mac); char * xenStoreDomainGetDiskID(virConnectPtr conn, int id, - const char *mac); + const char *dev); char * xenStoreDomainGetName(virConnectPtr conn, int id);