On 10/12/2012 03:52 PM, Osier Yang wrote: > Setting pinning policy for vcpu which exceeds current vcpus number > just makes no sense, however, it could cause various problems, E.g. > > <vcpu current='1'>4</vcpu> > <cputune> > <vcpupin vcpuid='3' cpuset='4'/> > </cputune> > > % virsh start linux > error: Failed to start domain linux > error: cannot set CPU affinity on process 32534: No such process > Well pointed out. > 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. > We should definitely fix it there as well. However I *think* that it is caused just by us trying to move the processor more times, which would be fixed by this. But that's just an idea. > This patch is to ignore the <vcpupin> for not onlined vcpus. > > --- > src/conf/domain_conf.c | 10 +++++++++- > 1 files changed, 9 insertions(+), 1 deletions(-) > > diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c > index 3c3d0ae..5141be6 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 > + * <vcpupin> 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); > > ACK, Martin -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list