From 2b6d170cc9b511657cd0aefc8515bdc4b7467a94 Mon Sep 17 00:00:00 2001
From: hy <941973499@qq.com>
Date: Mon, 18 Aug 2025 11:02:40 +0800
Subject: [PATCH] conf: add support for memorytune XML processing for MB
min_bandwidth
src/conf/domain_conf.c | 12 ++++++++++--
src/conf/schemas/domaincommon.rng | 5 +++++
src/util/virresctrl.c | 8 +++++++-
3 files changed, 22 insertions(+), 3 deletions(-)
@@ -18239,6 +18239,7 @@ virDomainMemorytuneDefParseMemory(xmlXPathContextPtr ctxt,
unsigned int bandwidth;
unsigned int hard_limit = UINT_MAX;
unsigned int priority = UINT_MAX;
+ unsigned int min_bandwidth = UINT_MAX;
ctxt->node = node;
@@ -18252,20 +18253,27 @@ virDomainMemorytuneDefParseMemory(xmlXPathContextPtr ctxt,
if (virResctrlAllocSetMemoryBandwidth(alloc, VIR_MEMORY_TYPE_BANDWIDTH, id, bandwidth) < 0)
return -1;
- if (virXMLPropUIntDefault(node, "hardlimit", 10, 0, &hard_limit, UINT_MAX) < 0)
+ if (virXMLPropUIntDefault(node, "hardlimit", 10, VIR_XML_PROP_NONE, &hard_limit, UINT_MAX) < 0)
return -1;
if (hard_limit != UINT_MAX &&
virResctrlAllocSetMemoryBandwidth(alloc, VIR_MEMORY_TYPE_HARDLIMIT, id, hard_limit) < 0)
return -1;
- if (virXMLPropUIntDefault(node, "priority", 10, 0, &priority, UINT_MAX) < 0)
+ if (virXMLPropUIntDefault(node, "priority", 10, VIR_XML_PROP_NONE, &priority, UINT_MAX) < 0)
return -1;
if (priority != UINT_MAX &&
virResctrlAllocSetMemoryBandwidth(alloc, VIR_MEMORY_TYPE_PRIORITY, id, priority) < 0)
return -1;
+ if (virXMLPropUIntDefault(node, "min_bandwidth", 10, VIR_XML_PROP_NONE, &min_bandwidth, UINT_MAX) < 0)
+ return -1;
+
+ if (min_bandwidth != UINT_MAX &&
+ virResctrlAllocSetMemoryBandwidth(alloc, VIR_MEMORY_TYPE_MIN_BANDWIDTH, id, min_bandwidth) < 0)
+ return -1;
+
return 0;
}
@@ -1195,6 +1195,11 @@
<ref name="unsignedInt"/>
</attribute>
</optional>
+ <optional>
+ <attribute name="min_bandwidth">
+ <ref name="unsignedInt"/>
+ </attribute>
+ </optional>
</element>
<element name="monitor">
<attribute name="vcpus">
@@ -87,7 +87,7 @@ VIR_ENUM_IMPL(virMemory,
"bandwidth",
"hardlimit",
"priority",
- "minbandwidth",
+ "min_bandwidth",
);
VIR_ENUM_DECL(virResctrlMemory);
@@ -1423,6 +1423,12 @@ virResctrlAllocSetMemoryBandwidth(virResctrlAlloc *alloc,
}
break;
case VIR_MEMORY_TYPE_MIN_BANDWIDTH:
+ if (value > 100) {
+ virReportError(VIR_ERR_XML_ERROR, "%s",
+ _("Memory Bandwidth min_bandwidth value exceeding 100 is invalid."));
+ return -1;
+ }
+ break;
case VIR_MEMORY_TYPE_LAST:
default:
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
--
2.33.0