From caaf9441f3ea3fefae5274d04db4725e89e9bda3 Mon Sep 17 00:00:00 2001 From: Daniel Veillard Date: Mon, 13 Nov 2006 17:09:31 +0000 Subject: [PATCH] * src/xend_internal.c src/xml.c: fix for shareable drive support rhbz#214908 Daniel --- ChangeLog | 5 +++++ src/xend_internal.c | 2 ++ src/xml.c | 11 ++++++++--- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index bf8c29938e..255d8f0f4c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Mon Nov 13 17:18:00 CET 2006 Daniel Veillard + + * src/xend_internal.c src/xml.c: fix for shareable drive support + rhbz#214908 + Fri Nov 10 17:53:41 EDT 2006 Daniel Berrange * src/xml.c: Fix memory leak, by freeing xmlParserContextPtr object diff --git a/src/xend_internal.c b/src/xend_internal.c index 54a9f9e22e..990d8a0550 100644 --- a/src/xend_internal.c +++ b/src/xend_internal.c @@ -1690,6 +1690,8 @@ xend_parse_sexp_desc(virConnectPtr conn, struct sexpr *root, int xendConfigVersi xend has already done this ? */ if ((mode != NULL) && (!strcmp(mode, "r"))) virBufferVSprintf(&buf, " \n"); + else if ((mode != NULL) && (!strcmp(mode, "w!"))) + virBufferVSprintf(&buf, " \n"); virBufferAdd(&buf, " \n", 12); bad_parse: diff --git a/src/xml.c b/src/xml.c index 7559e44b9d..b1ef663d72 100644 --- a/src/xml.c +++ b/src/xml.c @@ -955,6 +955,7 @@ virDomainParseXMLDiskDesc(xmlNodePtr node, virBufferPtr buf, int hvm, int xendCo xmlChar *drvName = NULL; xmlChar *drvType = NULL; int ro = 0; + int shareable = 0; int typ = 0; int cdrom = 0; @@ -988,6 +989,8 @@ virDomainParseXMLDiskDesc(xmlNodePtr node, virBufferPtr buf, int hvm, int xendCo drvType = xmlGetProp(cur, BAD_CAST "type"); } else if (xmlStrEqual(cur->name, BAD_CAST "readonly")) { ro = 1; + } else if (xmlStrEqual(cur->name, BAD_CAST "shareable")) { + shareable = 1; } } cur = cur->next; @@ -1076,10 +1079,12 @@ virDomainParseXMLDiskDesc(xmlNodePtr node, virBufferPtr buf, int hvm, int xendCo virBufferVSprintf(buf, "(uname 'phy:/dev/%s')", source); } } - if (ro == 0) - virBufferVSprintf(buf, "(mode 'w')"); - else if (ro == 1) + if (ro == 1) virBufferVSprintf(buf, "(mode 'r')"); + else if (shareable == 1) + virBufferVSprintf(buf, "(mode 'w!')"); + else + virBufferVSprintf(buf, "(mode 'w')"); virBufferAdd(buf, ")", 1); virBufferAdd(buf, ")", 1); -- 2.39.5