cpu_conf: Fix default value for CPU match attribute

Commit v0.8.4-66-g95ff6b18ec (9 years ago) changed the default value for
the cpu/@match attribute to 'exact' in a rather complicated way. It did
so only if <model> subelement was present and set -1 otherwise (which is
not expected to ever happen). Thus the following two equivalent XML
elements:

    <cpu mode='host-model'/>

and

    <cpu mode='host-model'>
      <model/>
    </cpu>

would be parsed differently. The former would end up with match == -1
while the latter would have match == 1 ('exact'). This is not a big deal
since the match attribute is ignored for host-model CPUs, but we can
simplify the code and make it a little bit saner anyway.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
Jiri Denemark 2019-11-12 15:26:23 +01:00
parent d3f2a8bd47
commit 65fa7bba1a
2 changed files with 3 additions and 8 deletions

View File

@ -46,8 +46,8 @@ VIR_ENUM_IMPL(virCPUMode,
VIR_ENUM_IMPL(virCPUMatch,
VIR_CPU_MATCH_LAST,
"minimum",
"exact",
"minimum",
"strict",
);
@ -388,12 +388,7 @@ virCPUDefParseXML(xmlXPathContextPtr ctxt,
char *match = virXMLPropString(ctxt->node, "match");
char *check;
if (!match) {
if (virXPathBoolean("boolean(./model)", ctxt))
def->match = VIR_CPU_MATCH_EXACT;
else
def->match = -1;
} else {
if (match) {
def->match = virCPUMatchTypeFromString(match);
VIR_FREE(match);

View File

@ -52,8 +52,8 @@ typedef enum {
VIR_ENUM_DECL(virCPUMode);
typedef enum {
VIR_CPU_MATCH_MINIMUM,
VIR_CPU_MATCH_EXACT,
VIR_CPU_MATCH_MINIMUM,
VIR_CPU_MATCH_STRICT,
VIR_CPU_MATCH_LAST