From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ian Campbell Subject: Re: [PATCH v3 3/7] libxl: In libxl_set_vcpuonline check for maximum number of VCPUs against the cpumap. Date: Tue, 24 Mar 2015 15:22:55 +0000 Message-ID: <1427210575.21742.438.camel@citrix.com> References: <1427134861-18881-1-git-send-email-konrad.wilk@oracle.com> <1427134861-18881-4-git-send-email-konrad.wilk@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from mail6.bemta14.messagelabs.com ([193.109.254.103]) by lists.xen.org with esmtp (Exim 4.72) (envelope-from ) id 1YaQfw-00045c-Oh for xen-devel@lists.xenproject.org; Tue, 24 Mar 2015 15:23:28 +0000 In-Reply-To: <1427134861-18881-4-git-send-email-konrad.wilk@oracle.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Konrad Rzeszutek Wilk Cc: xen-devel@lists.xenproject.org List-Id: xen-devel@lists.xenproject.org On Mon, 2015-03-23 at 14:20 -0400, Konrad Rzeszutek Wilk wrote: > There is no sense in trying to online (or offline) CPUs when the size of > cpumap is greater than the maximum number of VCPUs the guest can go to. > > As such fail the operation if the count of CPUs to online is greater > than what the guest started with. For the offline case we do not > check (as the bits are unset in the cpumap) and let it go through. > > Signed-off-by: Konrad Rzeszutek Wilk > --- > tools/libxl/libxl.c | 27 ++++++++++++++++++++++++--- > 1 file changed, 24 insertions(+), 3 deletions(-) > > diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c > index 4152ee4..d2b5ff3 100644 > --- a/tools/libxl/libxl.c > +++ b/tools/libxl/libxl.c > @@ -5449,6 +5449,20 @@ int libxl_domain_get_nodeaffinity(libxl_ctx *ctx, uint32_t domid, > return 0; > } > > +static int libxl__check_max(libxl__gc *gc, libxl_dominfo *info, > + libxl_bitmap *cpumap) > +{ > + int maxcpus = libxl_bitmap_count_set(cpumap); > + > + if (maxcpus > info->vcpu_max_id + 1) > + { > + LOGE(ERROR, "You have a max of %d vCPUs and you want %d vCPUs!", > + info->vcpu_max_id + 1, maxcpus); Please avoid personal pronouns in libxl logs (I don't have a max of any number of vcpus, the domain does). Here "setting %d vcpus, max vcpus is %d" perhaps. Both libxl__set_vcpuonline_qmp and libxl__set_vcpuonline_xenstore start with the same code to get info. Please could you move that (and the associated dispose) into libxl_set_vcpuonline and check the limit once up front (no need for helper then) and pass the info as a pointer to the specific functions. Ian.