fix the detach-disk command when using Xen tap devices

* 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
Daniel
This commit is contained in:
Daniel Veillard 2007-12-14 15:38:02 +00:00
parent b47ffc035c
commit 81acc14e3a
4 changed files with 43 additions and 17 deletions

View File

@ -1,3 +1,9 @@
Fri Dec 14 16:36:02 CET 2007 Daniel Veillard <veillard@redhat.com>
* 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 <rjones@redhat.com>
Fix virBufferEscapeString escaping of '<'

View File

@ -34,7 +34,7 @@ href="http://kvm.qumranet.com/">KVM</a> and
<p>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 <a
href="downloads.html">CVS version or snapshot</a>, contact the mailing list
and check the <a href="ChangeLog.html">ChangeLog</a> to gauge progresses.</p>
and check the <a href="ChangeLog.html">ChangeLog</a> to gauge progress.</p>
<h3>0.3.3: Sep 30 2007</h3>

View File

@ -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,

View File

@ -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);