[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2 3/5] libxl: vcpuset: Check max_vcpus argument against the maximum number of vCPUs the guest has set.
On Fri, 2015-03-13 at 16:26 -0400, Konrad Rzeszutek Wilk wrote: > The maximum number of VCPUs the guest can have is determined during > domain creation and is set by 'maxvcpus' parameter (in the guest > config). Trying to set the amount of vCPUs above said value > in vcpuset will result in an error - and we can catch it here > (instead of later in the function) and print a nice warning to the user. I suppose the "later in the function" is in the return value of libxl_set_vcpuonline? I think this check would be better off done inside the library, i.e. in libxl_set_vcpuonline, with a (probably new) suitable error code. The libxl can log and xl can spot the situation and log something specific (if indeed it needs to once libxl does). Ian. > > Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx> > [v2: Check ERROR_NOTFOUND return value] > --- > tools/libxl/xl_cmdimpl.c | 16 +++++++++++++++- > 1 file changed, 15 insertions(+), 1 deletion(-) > > diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c > index 454a895..ba0fd71 100644 > --- a/tools/libxl/xl_cmdimpl.c > +++ b/tools/libxl/xl_cmdimpl.c > @@ -5018,6 +5018,7 @@ static int vcpuset(uint32_t domid, const char* > nr_vcpus, int check_host) > char *endptr; > unsigned int max_vcpus, i; > libxl_bitmap cpumap; > + libxl_dominfo dominfo; > int rc; > > libxl_bitmap_init(&cpumap); > @@ -5026,7 +5027,20 @@ static int vcpuset(uint32_t domid, const char* > nr_vcpus, int check_host) > fprintf(stderr, "Error: Invalid argument.\n"); > return -ERROR_INVAL; > } > - > + rc = libxl_domain_info(ctx, &dominfo, domid); > + if (rc == ERROR_NOTFOUND) { > + fprintf(stderr, "Error: Domain %u does not exist.\n", domid); > + return -rc; > + } > + if (rc) { > + fprintf(stderr, "libxl_domain_info failed (code %d).\n", rc); > + return -rc; > + } > + if (max_vcpus > dominfo.vcpu_max_id + 1) { > + fprintf(stderr, "You have a max of %d vCPUs and you want %d > vCPUs!\n", > + dominfo.vcpu_max_id + 1, max_vcpus); > + return -ERROR_INVAL; > + } > /* > * Maximum amount of vCPUS the guest is allowed to set is limited > * by the host's amount of pCPUs. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |