On 05/08/2012 10:04 AM, Osier Yang wrote:
<vcpu> is not an optional node. The value for its
'placement'
actually always defaults to 'static' in the underlying codes.
(Even no 'cpuset' and 'placement' is specified, the domain
process will be pinned to all the available pCPUs).
---
353 files changed, 359 insertions(+), 367 deletions(-)
I hope you did the bulk of this patch by script.
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 14b94d3..e0736b0 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -632,7 +632,6 @@ VIR_ENUM_IMPL(virDomainStartupPolicy,
VIR_DOMAIN_STARTUP_POLICY_LAST,
"optional");
VIR_ENUM_IMPL(virDomainCpuPlacementMode, VIR_DOMAIN_CPU_PLACEMENT_MODE_LAST,
- "default",
"static",
"auto");
@@ -7944,7 +7943,7 @@ static virDomainDefPtr virDomainDefParseXML(virCapsPtr caps,
}
VIR_FREE(tmp);
} else {
- def->placement_mode = VIR_DOMAIN_CPU_PLACEMENT_MODE_DEFAULT;
+ def->placement_mode = VIR_DOMAIN_CPU_PLACEMENT_MODE_STATIC;
}
if (def->placement_mode != VIR_DOMAIN_CPU_PLACEMENT_MODE_AUTO) {
@@ -7958,8 +7957,6 @@ static virDomainDefPtr virDomainDefParseXML(virCapsPtr caps,
if (virDomainCpuSetParse(set, 0, def->cpumask,
def->cpumasklen) < 0)
goto error;
- if (def->placement_mode == VIR_DOMAIN_CPU_PLACEMENT_MODE_DEFAULT)
- def->placement_mode = VIR_DOMAIN_CPU_PLACEMENT_MODE_STATIC;
VIR_FREE(tmp);
}
}
@@ -8110,13 +8107,10 @@ static virDomainDefPtr virDomainDefParseXML(virCapsPtr caps,
/* Copy 'placement' of <numatune> to <vcpu> if
its 'placement'
* is not specified and 'placement' of <numatune> is
specified.
*/
- if (def->placement_mode == VIR_DOMAIN_CPU_PLACEMENT_MODE_DEFAULT
&&
- placement_mode !=
VIR_DOMAIN_NUMATUNE_MEM_PLACEMENT_MODE_DEFAULT) {
- if (placement_mode ==
VIR_DOMAIN_NUMATUNE_MEM_PLACEMENT_MODE_STATIC)
- def->placement_mode =
VIR_DOMAIN_CPU_PLACEMENT_MODE_STATIC;
- else
+ if (placement_mode == VIR_DOMAIN_NUMATUNE_MEM_PLACEMENT_MODE_AUTO
&&
+ !def->cpumask)
def->placement_mode = VIR_DOMAIN_CPU_PLACEMENT_MODE_AUTO;
Indentation looks off here.
- }
+
def->numatune.memory.placement_mode = placement_mode;
} else {
virDomainReportError(VIR_ERR_XML_ERROR,
@@ -12503,9 +12497,8 @@ virDomainDefFormatInternal(virDomainDefPtr def,
allones = 0;
virBufferAddLit(buf, " <vcpu");
- if (def->placement_mode)
- virBufferAsprintf(buf, " placement='%s'",
-
virDomainCpuPlacementModeTypeToString(def->placement_mode));
+ virBufferAsprintf(buf, " placement='%s'",
+ virDomainCpuPlacementModeTypeToString(def->placement_mode));
if (!allones) {
char *cpumask = NULL;
if ((cpumask =
diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
index 92f3f48..52fd572 100644
--- a/src/conf/domain_conf.h
+++ b/src/conf/domain_conf.h
@@ -1409,8 +1409,7 @@ enum virDomainTimerModeType {
};
enum virDomainCpuPlacementMode {
- VIR_DOMAIN_CPU_PLACEMENT_MODE_DEFAULT = 0,
- VIR_DOMAIN_CPU_PLACEMENT_MODE_STATIC,
+ VIR_DOMAIN_CPU_PLACEMENT_MODE_STATIC = 0,
VIR_DOMAIN_CPU_PLACEMENT_MODE_AUTO,
VIR_DOMAIN_CPU_PLACEMENT_MODE_LAST,
Looks okay; everything else is mostly mechanical or fallout to keep the
testsuite passing with the new xml.
ACK.
--
Eric Blake eblake(a)redhat.com +1-919-301-3266
Libvirt virtualization library
http://libvirt.org