* src/xml.c: patch from Saori Fukuta to avoid (type ioemu)

on Xen-3.1 and HVM guests devices to avoid breaking paravirt
  drivers there
Daniel
This commit is contained in:
Daniel Veillard 2007-06-06 14:39:04 +00:00
parent 7eed474dd3
commit 41402668f9
2 changed files with 15 additions and 5 deletions

View File

@ -1,3 +1,9 @@
Wed Jun 6 16:37:36 CEST 2007 Daniel Veillard <veillard@redhat.com>
* src/xml.c: patch from Saori Fukuta to avoid (type ioemu)
on Xen-3.1 and HVM guests devices to avoid breaking paravirt
drivers there
Wed Jun 6 14:22:36 CEST 2007 Daniel Veillard <veillard@redhat.com> Wed Jun 6 14:22:36 CEST 2007 Daniel Veillard <veillard@redhat.com>
* src/virsh.c: added a logging option to a file based on * src/virsh.c: added a logging option to a file based on

View File

@ -1047,6 +1047,7 @@ virDomainParseXMLDiskDesc(virConnectPtr conn, xmlNodePtr node, virBufferPtr buf,
* @conn: pointer to the hypervisor connection * @conn: pointer to the hypervisor connection
* @node: node containing the interface description * @node: node containing the interface description
* @buf: a buffer for the result S-Expr * @buf: a buffer for the result S-Expr
* @xendConfigVersion: xend configuration file format
* *
* Parse the one interface the XML description and add it to the S-Expr in buf * Parse the one interface the XML description and add it to the S-Expr in buf
* This is a temporary interface as the S-Expr interface * This is a temporary interface as the S-Expr interface
@ -1056,7 +1057,7 @@ virDomainParseXMLDiskDesc(virConnectPtr conn, xmlNodePtr node, virBufferPtr buf,
* Returns 0 in case of success, -1 in case of error. * Returns 0 in case of success, -1 in case of error.
*/ */
static int static int
virDomainParseXMLIfDesc(virConnectPtr conn ATTRIBUTE_UNUSED, xmlNodePtr node, virBufferPtr buf, int hvm) virDomainParseXMLIfDesc(virConnectPtr conn ATTRIBUTE_UNUSED, xmlNodePtr node, virBufferPtr buf, int hvm, int xendConfigVersion)
{ {
xmlNodePtr cur; xmlNodePtr cur;
xmlChar *type = NULL; xmlChar *type = NULL;
@ -1129,8 +1130,11 @@ virDomainParseXMLIfDesc(virConnectPtr conn ATTRIBUTE_UNUSED, xmlNodePtr node, vi
virBufferVSprintf(buf, "(script '%s')", script); virBufferVSprintf(buf, "(script '%s')", script);
if (ip != NULL) if (ip != NULL)
virBufferVSprintf(buf, "(ip '%s')", ip); virBufferVSprintf(buf, "(ip '%s')", ip);
/* apparently not needed any more for xen >= 3.1 but harmless */ /*
if (hvm) * apparently (type ioemu) breaks paravirt drivers on HVM so skip this
* from Xen 3.1.0
*/
if ((hvm) && (xendConfigVersion < 4))
virBufferAdd(buf, "(type ioemu)", 12); virBufferAdd(buf, "(type ioemu)", 12);
virBufferAdd(buf, ")", 1); virBufferAdd(buf, ")", 1);
@ -1336,7 +1340,7 @@ virDomainParseXMLDesc(virConnectPtr conn, const char *xmldesc, char **name, int
if (nb_nodes > 0) { if (nb_nodes > 0) {
for (i = 0; i < nb_nodes; i++) { for (i = 0; i < nb_nodes; i++) {
virBufferAdd(&buf, "(device ", 8); virBufferAdd(&buf, "(device ", 8);
res = virDomainParseXMLIfDesc(conn, nodes[i], &buf, hvm); res = virDomainParseXMLIfDesc(conn, nodes[i], &buf, hvm, xendConfigVersion);
if (res != 0) { if (res != 0) {
free(nodes); free(nodes);
goto error; goto error;
@ -1499,7 +1503,7 @@ virParseXMLDevice(virConnectPtr conn, char *xmldesc, int hvm, int xendConfigVers
goto error; goto error;
} }
else if (xmlStrEqual(node->name, BAD_CAST "interface")) { else if (xmlStrEqual(node->name, BAD_CAST "interface")) {
if (virDomainParseXMLIfDesc(conn, node, &buf, hvm) != 0) if (virDomainParseXMLIfDesc(conn, node, &buf, hvm, xendConfigVersion) != 0)
goto error; goto error;
} }
cleanup: cleanup: