On Thu, Jul 07, 2016 at 03:28:44PM +0200, Martin Kletzander wrote: > On Thu, Jul 07, 2016 at 01:43:32PM +0100, Daniel P. Berrange wrote: > > On Thu, Jul 07, 2016 at 01:42:33PM +0100, Daniel P. Berrange wrote: > > > On Thu, Jul 07, 2016 at 02:12:32PM +0200, Martin Kletzander wrote: > > > > Some settings may be confusing and in case users use numad placement in > > > > combination with static placement we could warn them as it might not be > > > > wanted (but it's not forbidden). > > > > > > > > Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1254402 > > > > > > > > Signed-off-by: Martin Kletzander <mkletzan@xxxxxxxxxx> > > > > --- > > > > src/qemu/qemu_process.c | 75 ++++++++++++++++++++++++++++++++++++++++++++++++- > > > > 1 file changed, 74 insertions(+), 1 deletion(-) > > > > > > > > diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c > > > > index 0aab01fd4d50..c012b6efcab6 100644 > > > > --- a/src/qemu/qemu_process.c > > > > +++ b/src/qemu/qemu_process.c > > > > @@ -2304,6 +2304,76 @@ qemuProcessSetLinkStates(virQEMUDriverPtr driver, > > > > } > > > > > > > > > > > > +static int > > > > +qemuProcessCheckCpusMemsAlignment(virQEMUDriverPtr driver, > > > > + virDomainObjPtr vm, > > > > + virBitmapPtr cpumask, > > > > + const char *mem_mask) > > > > +{ > > > > + int ret = -1; > > > > + int hostnodes = 0; > > > > + char *cpumask_str = NULL; > > > > + char *tmpmask_str = NULL; > > > > + char *mem_cpus_str = NULL; > > > > + virCapsPtr caps = NULL; > > > > + virBitmapPtr tmpmask = NULL; > > > > + virBitmapPtr mem_cpus = NULL; > > > > + virBitmapPtr mem_nodes = NULL; > > > > + virDomainNumatuneMemMode mem_mode; > > > > + > > > > + if (virDomainNumatuneGetMode(vm->def->numa, -1, &mem_mode) != 0) > > > > + return 0; > > > > + > > > > + if (mem_mode != VIR_DOMAIN_NUMATUNE_MEM_STRICT) > > > > + return 0; > > > > + > > > > + if (!mem_mask || !cpumask) > > > > + return 0; > > > > + > > > > + if (!(caps = virQEMUDriverGetCapabilities(driver, false))) > > > > + goto cleanup; > > > > + > > > > + if (!(tmpmask = virBitmapNewCopy(cpumask))) > > > > + goto cleanup; > > > > + > > > > + if ((hostnodes = virNumaGetMaxNode()) < 0) > > > > + goto cleanup; > > > > + > > > > + if (virBitmapParse(mem_mask, &mem_nodes, hostnodes) < 0) > > > > + goto cleanup; > > > > + > > > > + if (!(mem_cpus = virCapabilitiesGetCpusForNodemask(caps, mem_nodes))) > > > > + goto cleanup; > > > > + > > > > + virBitmapSubtract(tmpmask, mem_cpus); > > > > + if (!virBitmapIsAllClear(tmpmask)) { > > > > + if (!(cpumask_str = virBitmapFormat(cpumask))) > > > > + goto cleanup; > > > > + > > > > + if (!(tmpmask_str = virBitmapFormat(tmpmask))) > > > > + goto cleanup; > > > > + > > > > + if (!(mem_cpus_str = virBitmapFormat(mem_cpus))) > > > > + goto cleanup; > > > > + > > > > + VIR_WARN("CPUs '%s' in cpumask '%s' might not have access to any NUMA " > > > > + "node in memory's nodeset '%s' which consists of CPUs: '%s'.", > > > > + tmpmask_str, cpumask_str, mem_mask, mem_cpus_str); > > > > > > We've had a general principle that we don't use VIR_WARN for this kind of > > > thing, because libvirtd logs are genrally invisible to the person who is > > > making the mistake. Meanwhile if this is intentional, we're spamming the > > > logs for a situation the user explicitly chose. > > > > > > So NACK to the entire patch, as it doesn't do anything useful IMHO. > > > > BTW, I'd suggest NOTABUG on this > > > > OK, I posted the first three patches as a clean-up separately so at > least we shave off some duplicated code ;) Oh sure, no objection to the general cleanup patches going in, jsut this last one. Regards, Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :| -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list