From 60b176c3d0f0d5037acfa5e27c7753f657833a0b Mon Sep 17 00:00:00 2001 From: Osier Yang Date: Fri, 12 Oct 2012 21:52:07 +0800 Subject: [PATCH] conf: Ignore vcpupin for not onlined vcpus when parsing Setting pinning policy for vcpu which exceeds current vcpus number just makes no sense, however, it could cause various problems, E.g. 4 % virsh start linux error: Failed to start domain linux error: cannot set CPU affinity on process 32534: No such process We must have some odd codes underlying which produces the "on process 32534", but the point is why we not to prevent earlier when parsing? Note that this is only one of the problem it could cause. This patch is to ignore the for not onlined vcpus. --- src/conf/domain_conf.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index c87c615520..be803165ba 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -8806,7 +8806,15 @@ static virDomainDefPtr virDomainDefParseXML(virCapsPtr caps, goto error; } - def->cputune.vcpupin[def->cputune.nvcpupin++] = vcpupin; + if (vcpupin->vcpuid >= def->vcpus) + /* To avoid the regression when daemon loading + * domain confs, we can't simply error out if + * nodes greater than current vcpus, + * ignoring them instead. + */ + VIR_WARN("Ignore vcpupin for not onlined vcpus"); + else + def->cputune.vcpupin[def->cputune.nvcpupin++] = vcpupin; } VIR_FREE(nodes);