From: Konrad Rzeszutek Wilk Date: Fri, 3 Apr 2015 20:02:34 +0000 (-0400) Subject: libxl/vcpu-set - allow to decrease vcpu count on overcommitted guests (v5) X-Git-Tag: 4.6.0-rc1~782 X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=292b2f8201d0f014a151b717ec9e3a2e882d3d65;p=xen.git libxl/vcpu-set - allow to decrease vcpu count on overcommitted guests (v5) We have a check to warn the user if they are overcommitting. But the check only checks the hosts CPU amount and does not take into account the case when the user is trying to fix the overcommit. That is - they want to limit the amount of online VCPUs. This fix allows the user to offline vCPUs without any warnings when they are running an overcommitted guest. Also fix the extra space in the message. Signed-off-by: Konrad Rzeszutek Wilk Acked-by: Ian Campbell --- diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c index b121d758a4..648ca08d8b 100644 --- a/tools/libxl/xl_cmdimpl.c +++ b/tools/libxl/xl_cmdimpl.c @@ -5238,12 +5238,21 @@ static int vcpuset(uint32_t domid, const char* nr_vcpus, int check_host) */ if (check_host) { unsigned int host_cpu = libxl_get_max_cpus(ctx); - if (max_vcpus > host_cpu) { - fprintf(stderr, "You are overcommmitting! You have %d physical " \ - " CPUs and want %d vCPUs! Aborting, use --ignore-host to " \ - " continue\n", host_cpu, max_vcpus); + libxl_dominfo dominfo; + + rc = libxl_domain_info(ctx, &dominfo, domid); + if (rc) return 1; + + if (max_vcpus > dominfo.vcpu_online && max_vcpus > host_cpu) { + fprintf(stderr, "You are overcommmitting! You have %d physical" \ + " CPUs and want %d vCPUs! Aborting, use --ignore-host to" \ + " continue\n", host_cpu, max_vcpus); + rc = 1; } + libxl_dominfo_dispose(&dominfo); + if (rc) + return 1; } rc = libxl_cpu_bitmap_alloc(ctx, &cpumap, max_vcpus); if (rc) {