
On 2012年10月10日 22:59, Martin Kletzander wrote:
On 10/10/2012 01:14 PM, Osier Yang wrote:
Setting pinning policy for vcpu which exceed current vcpus number makes no sense, and it could cause problem for APIs which associate the vcpu thread id with cgroup. --- src/conf/domain_conf.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 33e1e7f..87e0c6b 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -8746,9 +8746,9 @@ static virDomainDefPtr virDomainDefParseXML(virCapsPtr caps, if (n&& VIR_ALLOC_N(def->cputune.vcpupin, n)< 0) goto no_memory;
- if (n> def->maxvcpus) { + if (n> def->vcpus) { virReportError(VIR_ERR_INTERNAL_ERROR, - "%s", _("vcpupin nodes must be less than maxvcpus")); + "%s", _("vcpupin nodes must be less than current vcpus")); goto error; }
What about XML that specifies vcpu pinning for all the vcpus that might be there, but now enables only one. And other pinning just won't be used until those vcpus are in plugged. Or am I missing some problems this could cause?
That means we will keep the <vcpupin> for unplugged vcpus too. Assuming we go this way, then: It needs to maitain these unused yet <vcpupin> info in def->cputune, which cause a further work to do: sort the def->cputune.vcpupin by vcpuid, and then use def->vcpus instead of def->cputune.nvcpupin in various places to only work on the current onlined vcpus, and it's very likely missing the change in some corner. On one hand, personally I'd like manage the <vcpupin> dynamically, I.e. add it for plugged vcpu, remove it for unplugged vcpu. Keeping it always there looks strange. On the other hand, regardless of which way is better, better to keep it simple for us now, especially I won't want to see upcoming bugs bite me in the edge. :-) Regards, Osier