diff --git a/ChangeLog b/ChangeLog index 2c8c750379546bc99983505f73ba884f98172fad..b9b3f9cfe53f82b342ab57a57e6f1d4e4aedc5e0 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 f1bd74306943cb699f0f7afbae759ed6c9717bcb..5320b9e76915ea88ceb1738fa365a05a056e2d3c 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 3995e3ebcfbdde153b97136589d00f5da3dfb69f..32e1bf2384d6e12f3291c7858182667b65d4fc78 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 a17a9048485b022dd353cd3c1846725005df6a40..b0e7dacfd4b65983e7370308589fc256762727b5 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);