Later on, we will need to know whether the user specified the target
node or not. Turn the variable into a signed value. We already treat it
as signed in various parts of the qemu driver.
---
src/conf/domain_conf.c | 10 ++++++----
src/conf/domain_conf.h | 2 +-
2 files changed, 7 insertions(+), 5 deletions(-)
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 002bf13..514bd8a 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -12521,7 +12521,8 @@ virDomainMemoryTargetDefParseXML(xmlNodePtr node,
xmlNodePtr save = ctxt->node;
ctxt->node = node;
- if (virXPathUInt("string(./node)", ctxt, &def->targetNode) < 0)
{
+ if (virXPathInt("string(./node)", ctxt, &def->targetNode) < 0 ||
+ def->targetNode < 0) {
virReportError(VIR_ERR_XML_ERROR, "%s",
_("invalid or missing value of memory device node"));
goto cleanup;
@@ -17668,8 +17669,8 @@ virDomainMemoryDefCheckABIStability(virDomainMemoryDefPtr src,
if (src->targetNode != dst->targetNode) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
- _("Target memory device targetNode '%u' "
- "doesn't match source targetNode '%u'"),
+ _("Target memory device targetNode '%d' "
+ "doesn't match source targetNode '%d'"),
dst->targetNode, src->targetNode);
return false;
}
@@ -20759,7 +20760,8 @@ virDomainMemoryTargetDefFormat(virBufferPtr buf,
virBufferAdjustIndent(buf, 2);
virBufferAsprintf(buf, "<size
unit='KiB'>%llu</size>\n", def->size);
- virBufferAsprintf(buf, "<node>%u</node>\n",
def->targetNode);
+ if (def->targetNode >= 0)
+ virBufferAsprintf(buf, "<node>%d</node>\n",
def->targetNode);
virBufferAdjustIndent(buf, -2);
virBufferAddLit(buf, "</target>\n");
diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
index f10b534..8d43ee6 100644
--- a/src/conf/domain_conf.h
+++ b/src/conf/domain_conf.h
@@ -2022,7 +2022,7 @@ struct _virDomainMemoryDef {
/* target */
int model; /* virDomainMemoryModel */
- unsigned int targetNode;
+ int targetNode;
unsigned long long size; /* kibibytes */
virDomainDeviceInfo info;
--
2.4.5