* src/xend_internal.c: applied patch from Hugh Brock to allow

CD Rom device reload by reusing virDomainAttachDevice() with
  a new definition
Daniel
This commit is contained in:
Daniel Veillard 2007-09-10 11:47:17 +00:00
parent 298d289542
commit fcf1b59128
2 changed files with 17 additions and 2 deletions

View File

@ -1,3 +1,9 @@
Mon Sep 10 13:46:05 CEST 2007 Daniel Veillard <veillard@redhat.com>
* src/xend_internal.c: applied patch from Hugh Brock to allow
CD Rom device reload by reusing virDomainAttachDevice() with
a new definition
Mon Sep 10 11:35:06 CEST 2007 Daniel Veillard <veillard@redhat.com> Mon Sep 10 11:35:06 CEST 2007 Daniel Veillard <veillard@redhat.com>
* include/libvirt/libvirt.h include/libvirt/libvirt.h.in * include/libvirt/libvirt.h include/libvirt/libvirt.h.in

View File

@ -3087,6 +3087,7 @@ xenDaemonAttachDevice(virDomainPtr domain, char *xml)
char *sexpr, *conf, *str; char *sexpr, *conf, *str;
int hvm = 0, ret; int hvm = 0, ret;
xenUnifiedPrivatePtr priv; xenUnifiedPrivatePtr priv;
char class[8], ref[80];
if ((domain == NULL) || (domain->conn == NULL) || (domain->name == NULL)) { if ((domain == NULL) || (domain->conn == NULL) || (domain->name == NULL)) {
virXendError((domain ? domain->conn : NULL), VIR_ERR_INVALID_ARG, virXendError((domain ? domain->conn : NULL), VIR_ERR_INVALID_ARG,
@ -3116,8 +3117,16 @@ xenDaemonAttachDevice(virDomainPtr domain, char *xml)
*(conf + strlen(conf) -1) = 0; /* suppress final ) */ *(conf + strlen(conf) -1) = 0; /* suppress final ) */
} }
else conf = sexpr; else conf = sexpr;
if (virDomainXMLDevID(domain, xml, class, ref)) {
/* device doesn't exist, define it */
ret = xend_op(domain->conn, domain->name, "op", "device_create", ret = xend_op(domain->conn, domain->name, "op", "device_create",
"config", conf, NULL); "config", conf, NULL);
}
else {
/* device exists, attempt to modify it */
ret = xend_op(domain->conn, domain->name, "op", "device_configure",
"config", conf, "dev", ref, NULL);
}
free(sexpr); free(sexpr);
return ret; return ret;
} }