[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v9 6/9] libxl/xl: deprecate the build_info->cpumap field
On Wed, 2014-06-18 at 18:26 +0200, Dario Faggioli wrote: > On mer, 2014-06-18 at 16:53 +0100, Ian Campbell wrote: > > On Wed, 2014-06-18 at 16:28 +0200, Dario Faggioli wrote: > > > > diff --git a/docs/man/xl.cfg.pod.5 b/docs/man/xl.cfg.pod.5 > > > index c087cbc..af48622 100644 > > > --- a/docs/man/xl.cfg.pod.5 > > > +++ b/docs/man/xl.cfg.pod.5 > > > @@ -143,11 +143,11 @@ Combining this with "all" is also possible, meaning > > > "all,^nodes:1" > > > results in all the vcpus of the guest running on all the cpus on the > > > host, except for the cpus belonging to the host NUMA node 1. > > > > > > -=item ["2", "3"] (or [2, 3]) > > > +=item ["2", "3-8,^5"] > > > > > > -To ask for specific vcpu mapping. That means (in this example), vcpu #0 > > > -of the guest will run on cpu #2 of the host and vcpu #1 of the guest will > > > -run on cpu #3 of the host. > > > +To ask for specific vcpu mapping. That means (in this example), vcpu 0 > > > +of the guest will run on cpu 2 of the host and vcpu 1 of the guest will > > > +run on cpus 3,4,6,7,8 of the host. > > > > Why is deprecating a field in the libxl API changing the xl > > configuration file syntax? > > > Because what happens as a consequence of, in xl, filling the array > instead of just setting b_info->cpumap, is that we get to use the same > parsing function (vcpupin_parse()) for all the elements of the array > itself, in both the following cases: > > cpus="1-4,7" > > (which sort of becomes equivalent to ["1-4,7", "1-4,7"]) > > and: > > cpus=["3", "4"] > > Up to the previous patch, the latter case was handled asking the > elements of the list to be integers. Here we start using vcpupin_parse() > on them, and that is more powerful, and allows the elements to be > ranges. > > Anyway, I'll see if I can split this patch in two, as you suggest below, > to make things more evident. Thanks. > > > > @@ -261,6 +262,13 @@ int libxl__build_pre(libxl__gc *gc, uint32_t domid, > > > return rc; > > > } > > > libxl_domain_set_nodeaffinity(ctx, domid, &info->nodemap); > > > + /* > > > + * info->cpumap is DEPRECATED, but we still want old applications > > > + * that may be using it to continue working. > > > + */ > > > + if (!libxl_bitmap_is_full(&info->cpumap)) > > > > The caller is expected to initialise this unused field to a non-default > > state? That doesn't sound right. Did you mean !is_empty? > > > Nope. The default for this is to be full, so what I'm checking is really > that it stayed default. See libxl__domain_build_info_setdefault(): > > ... > if (!b_info->cpumap.size) { > if (libxl_cpu_bitmap_alloc(CTX, &b_info->cpumap, 0)) > return ERROR_FAIL; > libxl_bitmap_set_any(&b_info->cpumap); > } > ... > > Can I change this? If I can, I think the best would be to remove the > allocation from libxl__domain_build_info_setdefault(), so that all the > checks could become something like `if(cpumap.size)'. I agree. > But does stop allocating the bitmap qualifies as an incompatible API > change? I don't think so, do you think it might for some reason? > If yes, I think we're stuck with checking whether or not it's > full, to see if the user is doing something with it or not. > > > TBH I think you'd be better off just silently ignoring cpumap if the new > > thing is set. > > > This, I can try. > > > Or maybe converting the cpumap into the new array so the rest of the > > libxl internals only needs to deal with one. > > > Converting it to the new array where? AFAICT, this is the only place > where cpumap is used, so I don't think it's worth converting it. e.g. in setdefaults: if (cpumap.size && arraything == NULL) allocate an array and fill it from cpumap but if it is only used once then I guess it doesn't matter. Ian. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |