[libvirt] [PATCH 00/12] More cleanup from IOThreads changes

During the review process a few things were pointed at as perhaps needing some adjustments based on what was done for IOThreads. Specifically a memory leak in PinVcpuFlags since PinIOThreads was just a copy of the Vcpu code and secondarily since the IOThreads code "reused" the virDomainVcpuPin* data structures and API's, those should change names to be more generic. John Ferlan (12): qemu: Fix possible memory leak in qemuDomainPinVcpuFlags Convert virDomainVcpuPinDefPtr to virDomainPinDefPtr Convert virDomainPinDefPtr->vcpuid to virDomainPinDefPtr->id Convert virDomainVcpuPinDefFree to virDomainPinDefFree Convert virDomainVcpuPinDefArrayFree to virDomainPinDefArrayFree Convert virDomainVcpuPinDefCopy into virDomainPinDefCopy Convert virDomainVcpuPinIsDuplicate into virDomainPinIsDuplicate Convert virDomainVcpuPinFindByVcpu into virDomainPinFindByVcpu Replace virDomainVcpuPinAdd with virDomainPinAdd Replace virDomainIOThreadsPinAdd with virDomainPinAdd Replace virDomainVcpuPinDel with virDomainPinDel Remove virDomainIOThreadsPinDel src/conf/domain_conf.c | 234 +++++++++++++++++------------------------------ src/conf/domain_conf.h | 58 +++++------- src/libvirt_private.syms | 16 ++-- src/libxl/libxl_domain.c | 2 +- src/libxl/libxl_driver.c | 18 ++-- src/qemu/qemu_cgroup.c | 12 +-- src/qemu/qemu_cgroup.h | 4 +- src/qemu/qemu_driver.c | 104 +++++++++++---------- src/qemu/qemu_process.c | 16 ++-- src/xen/xend_internal.c | 10 +- 10 files changed, 204 insertions(+), 270 deletions(-) -- 2.1.0

During his review of the iothreads pin setting code, Pavel noted that there was a potential memory leak with respect to how the newVcpuPin is handled and the goto endjob's in failure paths which would not free the memory. For reference, See: http://www.redhat.com/archives/libvir-list/2015-March/msg00415.html Signed-off-by: John Ferlan <jferlan@redhat.com> --- src/qemu/qemu_driver.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index b3263ac..dea0788 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -4978,10 +4978,10 @@ qemuDomainPinVcpuFlags(virDomainPtr dom, newVcpuPinNum = 0; } - if (virDomainVcpuPinAdd(&newVcpuPin, &newVcpuPinNum, cpumap, maplen, vcpu) < 0) { + if (virDomainVcpuPinAdd(&newVcpuPin, &newVcpuPinNum, + cpumap, maplen, vcpu) < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("failed to update vcpupin")); - virDomainVcpuPinDefArrayFree(newVcpuPin, newVcpuPinNum); goto endjob; } @@ -4989,7 +4989,8 @@ qemuDomainPinVcpuFlags(virDomainPtr dom, if (virCgroupHasController(priv->cgroup, VIR_CGROUP_CONTROLLER_CPUSET)) { if (virCgroupNewVcpu(priv->cgroup, vcpu, false, &cgroup_vcpu) < 0) goto endjob; - if (qemuSetupCgroupVcpuPin(cgroup_vcpu, newVcpuPin, newVcpuPinNum, vcpu) < 0) { + if (qemuSetupCgroupVcpuPin(cgroup_vcpu, newVcpuPin, newVcpuPinNum, + vcpu) < 0) { virReportError(VIR_ERR_OPERATION_INVALID, _("failed to set cpuset.cpus in cgroup" " for vcpu %d"), vcpu); @@ -5008,16 +5009,14 @@ qemuDomainPinVcpuFlags(virDomainPtr dom, virDomainVcpuPinDel(vm->def, vcpu); } else { if (vm->def->cputune.vcpupin) - virDomainVcpuPinDefArrayFree(vm->def->cputune.vcpupin, vm->def->cputune.nvcpupin); + virDomainVcpuPinDefArrayFree(vm->def->cputune.vcpupin, + vm->def->cputune.nvcpupin); vm->def->cputune.vcpupin = newVcpuPin; vm->def->cputune.nvcpupin = newVcpuPinNum; newVcpuPin = NULL; } - if (newVcpuPin) - virDomainVcpuPinDefArrayFree(newVcpuPin, newVcpuPinNum); - if (virDomainSaveStatus(driver->xmlopt, cfg->stateDir, vm) < 0) goto endjob; @@ -5066,6 +5065,8 @@ qemuDomainPinVcpuFlags(virDomainPtr dom, qemuDomainObjEndJob(driver, vm); cleanup: + if (newVcpuPin) + virDomainVcpuPinDefArrayFree(newVcpuPin, newVcpuPinNum); if (cgroup_vcpu) virCgroupFree(&cgroup_vcpu); qemuDomObjEndAPI(&vm); -- 2.1.0

As pointed out by jtomko in his review of the IOThreads pinning code: http://www.redhat.com/archives/libvir-list/2015-March/msg00495.html there are some comments sprinkled in indicating IOThreads were using the same structure as the VcpuPin code... This is the first patch of a few that will change the virDomainVcpuPin* structures and code to just virDomainPin* - starting with the data structure naming... Signed-off-by: John Ferlan <jferlan@redhat.com> --- src/conf/domain_conf.c | 42 ++++++++++++++++++++---------------------- src/conf/domain_conf.h | 33 ++++++++++++++++----------------- src/libxl/libxl_driver.c | 2 +- src/qemu/qemu_cgroup.c | 4 ++-- src/qemu/qemu_cgroup.h | 4 ++-- src/qemu/qemu_driver.c | 12 ++++++------ src/qemu/qemu_process.c | 4 ++-- 7 files changed, 49 insertions(+), 52 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 3d05844..6e54dc1 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -2003,11 +2003,11 @@ virDomainClockDefClear(virDomainClockDefPtr def) VIR_FREE(def->timers); } -virDomainVcpuPinDefPtr * -virDomainVcpuPinDefCopy(virDomainVcpuPinDefPtr *src, int nvcpupin) +virDomainPinDefPtr * +virDomainVcpuPinDefCopy(virDomainPinDefPtr *src, int nvcpupin) { size_t i; - virDomainVcpuPinDefPtr *ret = NULL; + virDomainPinDefPtr *ret = NULL; if (VIR_ALLOC_N(ret, nvcpupin) < 0) goto error; @@ -2037,7 +2037,7 @@ virDomainVcpuPinDefCopy(virDomainVcpuPinDefPtr *src, int nvcpupin) } void -virDomainVcpuPinDefFree(virDomainVcpuPinDefPtr def) +virDomainVcpuPinDefFree(virDomainPinDefPtr def) { if (def) { virBitmapFree(def->cpumask); @@ -2046,7 +2046,7 @@ virDomainVcpuPinDefFree(virDomainVcpuPinDefPtr def) } void -virDomainVcpuPinDefArrayFree(virDomainVcpuPinDefPtr *def, +virDomainVcpuPinDefArrayFree(virDomainPinDefPtr *def, int nvcpupin) { size_t i; @@ -12699,14 +12699,14 @@ virDomainIdmapDefParseXML(xmlXPathContextPtr ctxt, * A vcpuid of -1 is valid and only valid for emulatorpin. So callers * have to check the returned cpuid for validity. */ -static virDomainVcpuPinDefPtr +static virDomainPinDefPtr virDomainVcpuPinDefParseXML(xmlNodePtr node, xmlXPathContextPtr ctxt, int maxvcpus, bool emulator, bool iothreads) { - virDomainVcpuPinDefPtr def; + virDomainPinDefPtr def; xmlNodePtr oldnode = ctxt->node; int vcpuid = -1; unsigned int iothreadid; @@ -13463,7 +13463,7 @@ virDomainDefParseXML(xmlDocPtr xml, goto error; for (i = 0; i < n; i++) { - virDomainVcpuPinDefPtr vcpupin = NULL; + virDomainPinDefPtr vcpupin = NULL; vcpupin = virDomainVcpuPinDefParseXML(nodes[i], ctxt, def->maxvcpus, false, false); @@ -13506,7 +13506,7 @@ virDomainDefParseXML(xmlDocPtr xml, i)) continue; - virDomainVcpuPinDefPtr vcpupin = NULL; + virDomainPinDefPtr vcpupin = NULL; if (VIR_ALLOC(vcpupin) < 0) goto error; @@ -13555,7 +13555,7 @@ virDomainDefParseXML(xmlDocPtr xml, goto error; for (i = 0; i < n; i++) { - virDomainVcpuPinDefPtr iothreadpin = NULL; + virDomainPinDefPtr iothreadpin = NULL; iothreadpin = virDomainVcpuPinDefParseXML(nodes[i], ctxt, def->iothreads, false, true); @@ -16676,7 +16676,7 @@ virDomainDefAddImplicitControllers(virDomainDefPtr def) /* Check if vcpupin with same vcpuid already exists. * Return 1 if exists, 0 if not. */ int -virDomainVcpuPinIsDuplicate(virDomainVcpuPinDefPtr *def, +virDomainVcpuPinIsDuplicate(virDomainPinDefPtr *def, int nvcpupin, int vcpu) { @@ -16693,8 +16693,8 @@ virDomainVcpuPinIsDuplicate(virDomainVcpuPinDefPtr *def, return 0; } -virDomainVcpuPinDefPtr -virDomainVcpuPinFindByVcpu(virDomainVcpuPinDefPtr *def, +virDomainPinDefPtr +virDomainVcpuPinFindByVcpu(virDomainPinDefPtr *def, int nvcpupin, int vcpu) { @@ -16712,13 +16712,13 @@ virDomainVcpuPinFindByVcpu(virDomainVcpuPinDefPtr *def, } int -virDomainVcpuPinAdd(virDomainVcpuPinDefPtr **vcpupin_list, +virDomainVcpuPinAdd(virDomainPinDefPtr **vcpupin_list, size_t *nvcpupin, unsigned char *cpumap, int maplen, int vcpu) { - virDomainVcpuPinDefPtr vcpupin = NULL; + virDomainPinDefPtr vcpupin = NULL; if (!vcpupin_list) return -1; @@ -16760,7 +16760,7 @@ void virDomainVcpuPinDel(virDomainDefPtr def, int vcpu) { int n; - virDomainVcpuPinDefPtr *vcpupin_list = def->cputune.vcpupin; + virDomainPinDefPtr *vcpupin_list = def->cputune.vcpupin; for (n = 0; n < def->cputune.nvcpupin; n++) { if (vcpupin_list[n]->vcpuid == vcpu) { @@ -16777,7 +16777,7 @@ virDomainEmulatorPinAdd(virDomainDefPtr def, unsigned char *cpumap, int maplen) { - virDomainVcpuPinDefPtr emulatorpin = NULL; + virDomainPinDefPtr emulatorpin = NULL; if (!def->cputune.emulatorpin) { /* No emulatorpin exists yet. */ @@ -16818,14 +16818,13 @@ virDomainEmulatorPinDel(virDomainDefPtr def) } int -virDomainIOThreadsPinAdd(virDomainVcpuPinDefPtr **iothreadspin_list, +virDomainIOThreadsPinAdd(virDomainPinDefPtr **iothreadspin_list, size_t *niothreadspin, unsigned char *cpumap, int maplen, unsigned int iothread_id) { - /* IOThreads share the virDomainVcpuPinDefPtr */ - virDomainVcpuPinDefPtr iothreadpin = NULL; + virDomainPinDefPtr iothreadpin = NULL; if (!iothreadspin_list) return -1; @@ -16868,8 +16867,7 @@ virDomainIOThreadsPinDel(virDomainDefPtr def, unsigned int iothread_id) { size_t i; - /* IOThreads share the virDomainVcpuPinDefPtr */ - virDomainVcpuPinDefPtr *iothreadspin_list = def->cputune.iothreadspin; + virDomainPinDefPtr *iothreadspin_list = def->cputune.iothreadspin; for (i = 0; i < def->cputune.niothreadspin; i++) { if (iothreadspin_list[i]->vcpuid == iothread_id) { diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index f36315b..811a2ab 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -1896,26 +1896,26 @@ struct _virDomainClockDef { # define VIR_DOMAIN_CPUMASK_LEN 1024 -typedef struct _virDomainVcpuPinDef virDomainVcpuPinDef; -typedef virDomainVcpuPinDef *virDomainVcpuPinDefPtr; -struct _virDomainVcpuPinDef { +typedef struct _virDomainPinDef virDomainPinDef; +typedef virDomainPinDef *virDomainPinDefPtr; +struct _virDomainPinDef { int vcpuid; virBitmapPtr cpumask; }; -void virDomainVcpuPinDefFree(virDomainVcpuPinDefPtr def); -void virDomainVcpuPinDefArrayFree(virDomainVcpuPinDefPtr *def, int nvcpupin); +void virDomainVcpuPinDefFree(virDomainPinDefPtr def); +void virDomainVcpuPinDefArrayFree(virDomainPinDefPtr *def, int nvcpupin); -virDomainVcpuPinDefPtr *virDomainVcpuPinDefCopy(virDomainVcpuPinDefPtr *src, - int nvcpupin); +virDomainPinDefPtr *virDomainVcpuPinDefCopy(virDomainPinDefPtr *src, + int nvcpupin); -int virDomainVcpuPinIsDuplicate(virDomainVcpuPinDefPtr *def, +int virDomainVcpuPinIsDuplicate(virDomainPinDefPtr *def, int nvcpupin, int vcpu); -virDomainVcpuPinDefPtr virDomainVcpuPinFindByVcpu(virDomainVcpuPinDefPtr *def, - int nvcpupin, - int vcpu); +virDomainPinDefPtr virDomainVcpuPinFindByVcpu(virDomainPinDefPtr *def, + int nvcpupin, + int vcpu); typedef struct _virBlkioDevice virBlkioDevice; typedef virBlkioDevice *virBlkioDevicePtr; @@ -2005,10 +2005,10 @@ struct _virDomainCputune { unsigned long long emulator_period; long long emulator_quota; size_t nvcpupin; - virDomainVcpuPinDefPtr *vcpupin; - virDomainVcpuPinDefPtr emulatorpin; + virDomainPinDefPtr *vcpupin; + virDomainPinDefPtr emulatorpin; size_t niothreadspin; - virDomainVcpuPinDefPtr *iothreadspin; + virDomainPinDefPtr *iothreadspin; size_t nvcpusched; virDomainThreadSchedParamPtr vcpusched; @@ -2549,7 +2549,7 @@ int virDomainDefCompatibleDevice(virDomainDefPtr def, virDomainDeviceDefPtr dev, virDomainDeviceAction action); -int virDomainVcpuPinAdd(virDomainVcpuPinDefPtr **vcpupin_list, +int virDomainVcpuPinAdd(virDomainPinDefPtr **vcpupin_list, size_t *nvcpupin, unsigned char *cpumap, int maplen, @@ -2563,8 +2563,7 @@ int virDomainEmulatorPinAdd(virDomainDefPtr def, int virDomainEmulatorPinDel(virDomainDefPtr def); -/* IOThreads share the virDomainVcpuPinDefPtr */ -int virDomainIOThreadsPinAdd(virDomainVcpuPinDefPtr **iothreadspin_list, +int virDomainIOThreadsPinAdd(virDomainPinDefPtr **iothreadspin_list, size_t *niothreads, unsigned char *cpumap, int maplen, diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c index 54bbd3b..60a27f9 100644 --- a/src/libxl/libxl_driver.c +++ b/src/libxl/libxl_driver.c @@ -2047,7 +2047,7 @@ libxlDomainGetVcpuPinInfo(virDomainPtr dom, int ncpumaps, libxlDriverConfigPtr cfg = libxlDriverConfigGet(driver); virDomainObjPtr vm = NULL; virDomainDefPtr targetDef = NULL; - virDomainVcpuPinDefPtr *vcpupin_list; + virDomainPinDefPtr *vcpupin_list; virBitmapPtr cpumask = NULL; int maxcpu, hostcpus, vcpu, pcpu, n, ret = -1; unsigned char *cpumap; diff --git a/src/qemu/qemu_cgroup.c b/src/qemu/qemu_cgroup.c index 2b5a182..260c3c5 100644 --- a/src/qemu/qemu_cgroup.c +++ b/src/qemu/qemu_cgroup.c @@ -941,7 +941,7 @@ qemuSetupCgroupVcpuBW(virCgroupPtr cgroup, int qemuSetupCgroupVcpuPin(virCgroupPtr cgroup, - virDomainVcpuPinDefPtr *vcpupin, + virDomainPinDefPtr *vcpupin, int nvcpupin, int vcpuid) { @@ -957,7 +957,7 @@ qemuSetupCgroupVcpuPin(virCgroupPtr cgroup, int qemuSetupCgroupIOThreadsPin(virCgroupPtr cgroup, - virDomainVcpuPinDefPtr *iothreadspin, + virDomainPinDefPtr *iothreadspin, int niothreadspin, int iothreadid) { diff --git a/src/qemu/qemu_cgroup.h b/src/qemu/qemu_cgroup.h index a5d9c49..b311af3 100644 --- a/src/qemu/qemu_cgroup.h +++ b/src/qemu/qemu_cgroup.h @@ -53,12 +53,12 @@ int qemuSetupCgroupVcpuBW(virCgroupPtr cgroup, unsigned long long period, long long quota); int qemuSetupCgroupVcpuPin(virCgroupPtr cgroup, - virDomainVcpuPinDefPtr *vcpupin, + virDomainPinDefPtr *vcpupin, int nvcpupin, int vcpuid); int qemuSetupCgroupEmulatorPin(virCgroupPtr cgroup, virBitmapPtr cpumask); int qemuSetupCgroupIOThreadsPin(virCgroupPtr cgroup, - virDomainVcpuPinDefPtr *iothreadspin, + virDomainPinDefPtr *iothreadspin, int niothreadspin, int iothreadid); int qemuSetupCgroupForVcpu(virDomainObjPtr vm); diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index dea0788..01f92be 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -4599,7 +4599,7 @@ static int qemuDomainHotplugVcpus(virQEMUDriverPtr driver, /* vm->def->cputune.vcpupin can't be NULL if * vm->def->cpumask is not NULL. */ - virDomainVcpuPinDefPtr vcpupin = NULL; + virDomainPinDefPtr vcpupin = NULL; if (VIR_ALLOC(vcpupin) < 0) goto cleanup; @@ -4901,7 +4901,7 @@ qemuDomainPinVcpuFlags(virDomainPtr dom, qemuDomainObjPrivatePtr priv; bool doReset = false; size_t newVcpuPinNum = 0; - virDomainVcpuPinDefPtr *newVcpuPin = NULL; + virDomainPinDefPtr *newVcpuPin = NULL; virBitmapPtr pcpumap = NULL; virQEMUDriverConfigPtr cfg = NULL; virCapsPtr caps = NULL; @@ -5138,7 +5138,7 @@ qemuDomainGetVcpuPinInfo(virDomainPtr dom, goto cleanup; for (vcpu = 0; vcpu < ncpumaps; vcpu++) { - virDomainVcpuPinDefPtr pininfo; + virDomainPinDefPtr pininfo; virBitmapPtr bitmap = NULL; unsigned char *tmpmap = NULL; int tmpmaplen; @@ -5191,7 +5191,7 @@ qemuDomainPinEmulator(virDomainPtr dom, qemuDomainObjPrivatePtr priv; bool doReset = false; size_t newVcpuPinNum = 0; - virDomainVcpuPinDefPtr *newVcpuPin = NULL; + virDomainPinDefPtr *newVcpuPin = NULL; virBitmapPtr pcpumap = NULL; virQEMUDriverConfigPtr cfg = NULL; virCapsPtr caps = NULL; @@ -5670,7 +5670,7 @@ qemuDomainGetIOThreadsConfig(virDomainDefPtr targetDef, goto cleanup; for (i = 0; i < targetDef->iothreads; i++) { - virDomainVcpuPinDefPtr pininfo; + virDomainPinDefPtr pininfo; if (VIR_ALLOC(info_ret[i]) < 0) goto cleanup; @@ -5775,7 +5775,7 @@ qemuDomainPinIOThread(virDomainPtr dom, virDomainDefPtr persistentDef = NULL; virBitmapPtr pcpumap = NULL; qemuDomainObjPrivatePtr priv; - virDomainVcpuPinDefPtr *newIOThreadsPin = NULL; + virDomainPinDefPtr *newIOThreadsPin = NULL; size_t newIOThreadsPinNum = 0; virCgroupPtr cgroup_iothread = NULL; virObjectEventPtr event = NULL; diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index d1f089d..3eb0a6a 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -2494,7 +2494,7 @@ qemuProcessSetVcpuAffinities(virDomainObjPtr vm) { qemuDomainObjPrivatePtr priv = vm->privateData; virDomainDefPtr def = vm->def; - virDomainVcpuPinDefPtr pininfo; + virDomainPinDefPtr pininfo; int n; int ret = -1; VIR_DEBUG("Setting affinity on CPUs nvcpupin=%zu nvcpus=%d nvcpupids=%d", @@ -2560,7 +2560,7 @@ qemuProcessSetIOThreadsAffinity(virDomainObjPtr vm) { qemuDomainObjPrivatePtr priv = vm->privateData; virDomainDefPtr def = vm->def; - virDomainVcpuPinDefPtr pininfo; + virDomainPinDefPtr pininfo; size_t i; int ret = -1; -- 2.1.0

Since we're not specifically a vcpu related structure anymore... Signed-off-by: John Ferlan <jferlan@redhat.com> --- src/conf/domain_conf.c | 39 +++++++++++++++++++-------------------- src/conf/domain_conf.h | 2 +- src/libxl/libxl_domain.c | 2 +- src/libxl/libxl_driver.c | 2 +- src/qemu/qemu_cgroup.c | 8 ++++---- src/qemu/qemu_driver.c | 2 +- 6 files changed, 27 insertions(+), 28 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 6e54dc1..04de04e 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -2015,7 +2015,7 @@ virDomainVcpuPinDefCopy(virDomainPinDefPtr *src, int nvcpupin) for (i = 0; i < nvcpupin; i++) { if (VIR_ALLOC(ret[i]) < 0) goto error; - ret[i]->vcpuid = src[i]->vcpuid; + ret[i]->id = src[i]->id; if ((ret[i]->cpumask = virBitmapNewCopy(src[i]->cpumask)) == NULL) goto error; } @@ -12736,7 +12736,7 @@ virDomainVcpuPinDefParseXML(xmlNodePtr node, goto error; } - def->vcpuid = vcpuid; + def->id = vcpuid; } if (iothreads && (tmp = virXPathString("string(./@iothread)", ctxt))) { @@ -12763,8 +12763,7 @@ virDomainVcpuPinDefParseXML(xmlNodePtr node, goto error; } - /* Rather than creating our own structure we are reusing the vCPU */ - def->vcpuid = iothreadid; + def->id = iothreadid; } if (!(tmp = virXMLPropString(node, "cpuset"))) { @@ -13472,14 +13471,14 @@ virDomainDefParseXML(xmlDocPtr xml, if (virDomainVcpuPinIsDuplicate(def->cputune.vcpupin, def->cputune.nvcpupin, - vcpupin->vcpuid)) { + vcpupin->id)) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("duplicate vcpupin for same vcpu")); virDomainVcpuPinDefFree(vcpupin); goto error; } - if (vcpupin->vcpuid >= def->vcpus) { + if (vcpupin->id >= def->vcpus) { /* To avoid the regression when daemon loading * domain confs, we can't simply error out if * <vcpupin> nodes greater than current vcpus, @@ -13516,7 +13515,7 @@ virDomainDefParseXML(xmlDocPtr xml, goto error; } virBitmapCopy(vcpupin->cpumask, def->cpumask); - vcpupin->vcpuid = i; + vcpupin->id = i; def->cputune.vcpupin[def->cputune.nvcpupin++] = vcpupin; } } @@ -13564,7 +13563,7 @@ virDomainDefParseXML(xmlDocPtr xml, if (virDomainVcpuPinIsDuplicate(def->cputune.iothreadspin, def->cputune.niothreadspin, - iothreadpin->vcpuid)) { + iothreadpin->id)) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("duplicate iothreadpin for same iothread")); virDomainVcpuPinDefFree(iothreadpin); @@ -16673,7 +16672,7 @@ virDomainDefAddImplicitControllers(virDomainDefPtr def) return 0; } -/* Check if vcpupin with same vcpuid already exists. +/* Check if vcpupin with same id already exists. * Return 1 if exists, 0 if not. */ int virDomainVcpuPinIsDuplicate(virDomainPinDefPtr *def, @@ -16686,7 +16685,7 @@ virDomainVcpuPinIsDuplicate(virDomainPinDefPtr *def, return 0; for (i = 0; i < nvcpupin; i++) { - if (def[i]->vcpuid == vcpu) + if (def[i]->id == vcpu) return 1; } @@ -16704,7 +16703,7 @@ virDomainVcpuPinFindByVcpu(virDomainPinDefPtr *def, return NULL; for (i = 0; i < nvcpupin; i++) { - if (def[i]->vcpuid == vcpu) + if (def[i]->id == vcpu) return def[i]; } @@ -16727,7 +16726,7 @@ virDomainVcpuPinAdd(virDomainPinDefPtr **vcpupin_list, *nvcpupin, vcpu); if (vcpupin) { - vcpupin->vcpuid = vcpu; + vcpupin->id = vcpu; virBitmapFree(vcpupin->cpumask); vcpupin->cpumask = virBitmapNewData(cpumap, maplen); if (!vcpupin->cpumask) @@ -16741,7 +16740,7 @@ virDomainVcpuPinAdd(virDomainPinDefPtr **vcpupin_list, if (VIR_ALLOC(vcpupin) < 0) goto error; - vcpupin->vcpuid = vcpu; + vcpupin->id = vcpu; vcpupin->cpumask = virBitmapNewData(cpumap, maplen); if (!vcpupin->cpumask) goto error; @@ -16763,7 +16762,7 @@ virDomainVcpuPinDel(virDomainDefPtr def, int vcpu) virDomainPinDefPtr *vcpupin_list = def->cputune.vcpupin; for (n = 0; n < def->cputune.nvcpupin; n++) { - if (vcpupin_list[n]->vcpuid == vcpu) { + if (vcpupin_list[n]->id == vcpu) { virBitmapFree(vcpupin_list[n]->cpumask); VIR_FREE(vcpupin_list[n]); VIR_DELETE_ELEMENT(def->cputune.vcpupin, n, def->cputune.nvcpupin); @@ -16784,7 +16783,7 @@ virDomainEmulatorPinAdd(virDomainDefPtr def, if (VIR_ALLOC(emulatorpin) < 0) return -1; - emulatorpin->vcpuid = -1; + emulatorpin->id = -1; emulatorpin->cpumask = virBitmapNewData(cpumap, maplen); if (!emulatorpin->cpumask) { virDomainVcpuPinDefFree(emulatorpin); @@ -16833,7 +16832,7 @@ virDomainIOThreadsPinAdd(virDomainPinDefPtr **iothreadspin_list, *niothreadspin, iothread_id); if (iothreadpin) { - iothreadpin->vcpuid = iothread_id; + iothreadpin->id = iothread_id; virBitmapFree(iothreadpin->cpumask); iothreadpin->cpumask = virBitmapNewData(cpumap, maplen); if (!iothreadpin->cpumask) @@ -16847,7 +16846,7 @@ virDomainIOThreadsPinAdd(virDomainPinDefPtr **iothreadspin_list, if (VIR_ALLOC(iothreadpin) < 0) goto error; - iothreadpin->vcpuid = iothread_id; + iothreadpin->id = iothread_id; iothreadpin->cpumask = virBitmapNewData(cpumap, maplen); if (!iothreadpin->cpumask) goto error; @@ -16870,7 +16869,7 @@ virDomainIOThreadsPinDel(virDomainDefPtr def, virDomainPinDefPtr *iothreadspin_list = def->cputune.iothreadspin; for (i = 0; i < def->cputune.niothreadspin; i++) { - if (iothreadspin_list[i]->vcpuid == iothread_id) { + if (iothreadspin_list[i]->id == iothread_id) { virBitmapFree(iothreadspin_list[i]->cpumask); VIR_DELETE_ELEMENT(def->cputune.iothreadspin, i, def->cputune.niothreadspin); @@ -20042,7 +20041,7 @@ virDomainDefFormatInternal(virDomainDefPtr def, continue; virBufferAsprintf(buf, "<vcpupin vcpu='%u' ", - def->cputune.vcpupin[i]->vcpuid); + def->cputune.vcpupin[i]->id); if (!(cpumask = virBitmapFormat(def->cputune.vcpupin[i]->cpumask))) goto error; @@ -20069,7 +20068,7 @@ virDomainDefFormatInternal(virDomainDefPtr def, continue; virBufferAsprintf(buf, "<iothreadpin iothread='%u' ", - def->cputune.iothreadspin[i]->vcpuid); + def->cputune.iothreadspin[i]->id); if (!(cpumask = virBitmapFormat(def->cputune.iothreadspin[i]->cpumask))) goto error; diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 811a2ab..f7f1146 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -1899,7 +1899,7 @@ struct _virDomainClockDef { typedef struct _virDomainPinDef virDomainPinDef; typedef virDomainPinDef *virDomainPinDefPtr; struct _virDomainPinDef { - int vcpuid; + int id; virBitmapPtr cpumask; }; diff --git a/src/libxl/libxl_domain.c b/src/libxl/libxl_domain.c index 66ca988..407a9bd 100644 --- a/src/libxl/libxl_domain.c +++ b/src/libxl/libxl_domain.c @@ -1084,7 +1084,7 @@ libxlDomainSetVcpuAffinities(libxlDriverPrivatePtr driver, virDomainObjPtr vm) cpumaplen = VIR_CPU_MAPLEN(VIR_NODEINFO_MAXCPUS(nodeinfo)); for (vcpu = 0; vcpu < def->cputune.nvcpupin; ++vcpu) { - if (vcpu != def->cputune.vcpupin[vcpu]->vcpuid) + if (vcpu != def->cputune.vcpupin[vcpu]->id) continue; if (VIR_ALLOC_N(cpumap, cpumaplen) < 0) diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c index 60a27f9..97ef2c9 100644 --- a/src/libxl/libxl_driver.c +++ b/src/libxl/libxl_driver.c @@ -2095,7 +2095,7 @@ libxlDomainGetVcpuPinInfo(virDomainPtr dom, int ncpumaps, /* if vcpupin setting exists, there may be unused pcpus */ for (n = 0; n < targetDef->cputune.nvcpupin; n++) { vcpupin_list = targetDef->cputune.vcpupin; - vcpu = vcpupin_list[n]->vcpuid; + vcpu = vcpupin_list[n]->id; cpumask = vcpupin_list[n]->cpumask; cpumap = VIR_GET_CPUMAP(cpumaps, maplen, vcpu); for (pcpu = 0; pcpu < maxcpu; pcpu++) { diff --git a/src/qemu/qemu_cgroup.c b/src/qemu/qemu_cgroup.c index 260c3c5..3e30767 100644 --- a/src/qemu/qemu_cgroup.c +++ b/src/qemu/qemu_cgroup.c @@ -948,7 +948,7 @@ qemuSetupCgroupVcpuPin(virCgroupPtr cgroup, size_t i; for (i = 0; i < nvcpupin; i++) { - if (vcpuid == vcpupin[i]->vcpuid) + if (vcpuid == vcpupin[i]->id) return qemuSetupCgroupEmulatorPin(cgroup, vcpupin[i]->cpumask); } @@ -964,7 +964,7 @@ qemuSetupCgroupIOThreadsPin(virCgroupPtr cgroup, size_t i; for (i = 0; i < niothreadspin; i++) { - if (iothreadid == iothreadspin[i]->vcpuid) + if (iothreadid == iothreadspin[i]->id) return qemuSetupCgroupEmulatorPin(cgroup, iothreadspin[i]->cpumask); } @@ -1059,7 +1059,7 @@ qemuSetupCgroupForVcpu(virDomainObjPtr vm) /* find the right CPU to pin, otherwise * qemuSetupCgroupVcpuPin will fail. */ for (j = 0; j < def->cputune.nvcpupin; j++) { - if (def->cputune.vcpupin[j]->vcpuid != i) + if (def->cputune.vcpupin[j]->id != i) continue; if (qemuSetupCgroupVcpuPin(cgroup_vcpu, @@ -1236,7 +1236,7 @@ qemuSetupCgroupForIOThreads(virDomainObjPtr vm) * qemuSetupCgroupIOThreadsPin will fail. */ for (j = 0; j < def->cputune.niothreadspin; j++) { /* IOThreads are numbered/named 1..n */ - if (def->cputune.iothreadspin[j]->vcpuid != i + 1) + if (def->cputune.iothreadspin[j]->id != i + 1) continue; if (qemuSetupCgroupIOThreadsPin(cgroup_iothread, diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 01f92be..94221fb 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -4606,7 +4606,7 @@ static int qemuDomainHotplugVcpus(virQEMUDriverPtr driver, vcpupin->cpumask = virBitmapNew(VIR_DOMAIN_CPUMASK_LEN); virBitmapCopy(vcpupin->cpumask, vm->def->cpumask); - vcpupin->vcpuid = i; + vcpupin->id = i; if (VIR_APPEND_ELEMENT_COPY(vm->def->cputune.vcpupin, vm->def->cputune.nvcpupin, vcpupin) < 0) { virBitmapFree(vcpupin->cpumask); -- 2.1.0

Make common between Vcpu and IOThreads Signed-off-by: John Ferlan <jferlan@redhat.com> --- src/conf/domain_conf.c | 20 ++++++++++---------- src/conf/domain_conf.h | 2 +- src/libvirt_private.syms | 2 +- src/qemu/qemu_driver.c | 2 +- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 04de04e..db04855 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -2037,7 +2037,7 @@ virDomainVcpuPinDefCopy(virDomainPinDefPtr *src, int nvcpupin) } void -virDomainVcpuPinDefFree(virDomainPinDefPtr def) +virDomainPinDefFree(virDomainPinDefPtr def) { if (def) { virBitmapFree(def->cpumask); @@ -2055,7 +2055,7 @@ virDomainVcpuPinDefArrayFree(virDomainPinDefPtr *def, return; for (i = 0; i < nvcpupin; i++) - virDomainVcpuPinDefFree(def[i]); + virDomainPinDefFree(def[i]); VIR_FREE(def); } @@ -2231,7 +2231,7 @@ void virDomainDefFree(virDomainDefPtr def) virDomainVcpuPinDefArrayFree(def->cputune.vcpupin, def->cputune.nvcpupin); - virDomainVcpuPinDefFree(def->cputune.emulatorpin); + virDomainPinDefFree(def->cputune.emulatorpin); virDomainVcpuPinDefArrayFree(def->cputune.iothreadspin, def->cputune.niothreadspin); @@ -13474,7 +13474,7 @@ virDomainDefParseXML(xmlDocPtr xml, vcpupin->id)) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("duplicate vcpupin for same vcpu")); - virDomainVcpuPinDefFree(vcpupin); + virDomainPinDefFree(vcpupin); goto error; } @@ -13485,7 +13485,7 @@ virDomainDefParseXML(xmlDocPtr xml, * ignoring them instead. */ VIR_WARN("Ignore vcpupin for not onlined vcpus"); - virDomainVcpuPinDefFree(vcpupin); + virDomainPinDefFree(vcpupin); } else { def->cputune.vcpupin[def->cputune.nvcpupin++] = vcpupin; } @@ -13566,7 +13566,7 @@ virDomainDefParseXML(xmlDocPtr xml, iothreadpin->id)) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("duplicate iothreadpin for same iothread")); - virDomainVcpuPinDefFree(iothreadpin); + virDomainPinDefFree(iothreadpin); goto error; } @@ -16751,7 +16751,7 @@ virDomainVcpuPinAdd(virDomainPinDefPtr **vcpupin_list, return 0; error: - virDomainVcpuPinDefFree(vcpupin); + virDomainPinDefFree(vcpupin); return -1; } @@ -16786,7 +16786,7 @@ virDomainEmulatorPinAdd(virDomainDefPtr def, emulatorpin->id = -1; emulatorpin->cpumask = virBitmapNewData(cpumap, maplen); if (!emulatorpin->cpumask) { - virDomainVcpuPinDefFree(emulatorpin); + virDomainPinDefFree(emulatorpin); return -1; } @@ -16810,7 +16810,7 @@ virDomainEmulatorPinDel(virDomainDefPtr def) if (!def->cputune.emulatorpin) return 0; - virDomainVcpuPinDefFree(def->cputune.emulatorpin); + virDomainPinDefFree(def->cputune.emulatorpin); def->cputune.emulatorpin = NULL; return 0; @@ -16857,7 +16857,7 @@ virDomainIOThreadsPinAdd(virDomainPinDefPtr **iothreadspin_list, return 0; error: - virDomainVcpuPinDefFree(iothreadpin); + virDomainPinDefFree(iothreadpin); return -1; } diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index f7f1146..3f04832 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -1903,7 +1903,7 @@ struct _virDomainPinDef { virBitmapPtr cpumask; }; -void virDomainVcpuPinDefFree(virDomainPinDefPtr def); +void virDomainPinDefFree(virDomainPinDefPtr def); void virDomainVcpuPinDefArrayFree(virDomainPinDefPtr *def, int nvcpupin); virDomainPinDefPtr *virDomainVcpuPinDefCopy(virDomainPinDefPtr *src, diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 63e378b..adcb456 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -381,6 +381,7 @@ virDomainObjTaint; virDomainParseMemory; virDomainPausedReasonTypeFromString; virDomainPausedReasonTypeToString; +virDomainPinDefFree; virDomainPMSuspendedReasonTypeFromString; virDomainPMSuspendedReasonTypeToString; virDomainRedirdevBusTypeFromString; @@ -435,7 +436,6 @@ virDomainTPMModelTypeToString; virDomainVcpuPinAdd; virDomainVcpuPinDefArrayFree; virDomainVcpuPinDefCopy; -virDomainVcpuPinDefFree; virDomainVcpuPinDel; virDomainVcpuPinFindByVcpu; virDomainVcpuPinIsDuplicate; diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 94221fb..fed0c0d 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -5293,7 +5293,7 @@ qemuDomainPinEmulator(virDomainPtr dom, goto endjob; } } else { - virDomainVcpuPinDefFree(vm->def->cputune.emulatorpin); + virDomainPinDefFree(vm->def->cputune.emulatorpin); vm->def->cputune.emulatorpin = newVcpuPin[0]; VIR_FREE(newVcpuPin); } -- 2.1.0

Make common between Vcpu and IOThreads Signed-off-by: John Ferlan <jferlan@redhat.com> --- src/conf/domain_conf.c | 10 +++++----- src/conf/domain_conf.h | 2 +- src/libvirt_private.syms | 2 +- src/qemu/qemu_driver.c | 16 ++++++++-------- 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index db04855..e5a8011 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -2046,15 +2046,15 @@ virDomainPinDefFree(virDomainPinDefPtr def) } void -virDomainVcpuPinDefArrayFree(virDomainPinDefPtr *def, - int nvcpupin) +virDomainPinDefArrayFree(virDomainPinDefPtr *def, + int npin) { size_t i; if (!def) return; - for (i = 0; i < nvcpupin; i++) + for (i = 0; i < npin; i++) virDomainPinDefFree(def[i]); VIR_FREE(def); @@ -2229,11 +2229,11 @@ void virDomainDefFree(virDomainDefPtr def) virCPUDefFree(def->cpu); - virDomainVcpuPinDefArrayFree(def->cputune.vcpupin, def->cputune.nvcpupin); + virDomainPinDefArrayFree(def->cputune.vcpupin, def->cputune.nvcpupin); virDomainPinDefFree(def->cputune.emulatorpin); - virDomainVcpuPinDefArrayFree(def->cputune.iothreadspin, + virDomainPinDefArrayFree(def->cputune.iothreadspin, def->cputune.niothreadspin); for (i = 0; i < def->cputune.nvcpusched; i++) diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 3f04832..a126668 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -1904,7 +1904,7 @@ struct _virDomainPinDef { }; void virDomainPinDefFree(virDomainPinDefPtr def); -void virDomainVcpuPinDefArrayFree(virDomainPinDefPtr *def, int nvcpupin); +void virDomainPinDefArrayFree(virDomainPinDefPtr *def, int npin); virDomainPinDefPtr *virDomainVcpuPinDefCopy(virDomainPinDefPtr *src, int nvcpupin); diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index adcb456..8796b31 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -381,6 +381,7 @@ virDomainObjTaint; virDomainParseMemory; virDomainPausedReasonTypeFromString; virDomainPausedReasonTypeToString; +virDomainPinDefArrayFree; virDomainPinDefFree; virDomainPMSuspendedReasonTypeFromString; virDomainPMSuspendedReasonTypeToString; @@ -434,7 +435,6 @@ virDomainTPMDefFree; virDomainTPMModelTypeFromString; virDomainTPMModelTypeToString; virDomainVcpuPinAdd; -virDomainVcpuPinDefArrayFree; virDomainVcpuPinDefCopy; virDomainVcpuPinDel; virDomainVcpuPinFindByVcpu; diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index fed0c0d..b3eacf8 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -5009,8 +5009,8 @@ qemuDomainPinVcpuFlags(virDomainPtr dom, virDomainVcpuPinDel(vm->def, vcpu); } else { if (vm->def->cputune.vcpupin) - virDomainVcpuPinDefArrayFree(vm->def->cputune.vcpupin, - vm->def->cputune.nvcpupin); + virDomainPinDefArrayFree(vm->def->cputune.vcpupin, + vm->def->cputune.nvcpupin); vm->def->cputune.vcpupin = newVcpuPin; vm->def->cputune.nvcpupin = newVcpuPinNum; @@ -5066,7 +5066,7 @@ qemuDomainPinVcpuFlags(virDomainPtr dom, cleanup: if (newVcpuPin) - virDomainVcpuPinDefArrayFree(newVcpuPin, newVcpuPinNum); + virDomainPinDefArrayFree(newVcpuPin, newVcpuPinNum); if (cgroup_vcpu) virCgroupFree(&cgroup_vcpu); qemuDomObjEndAPI(&vm); @@ -5258,7 +5258,7 @@ qemuDomainPinEmulator(virDomainPtr dom, if (virDomainVcpuPinAdd(&newVcpuPin, &newVcpuPinNum, cpumap, maplen, -1) < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("failed to update vcpupin")); - virDomainVcpuPinDefArrayFree(newVcpuPin, newVcpuPinNum); + virDomainPinDefArrayFree(newVcpuPin, newVcpuPinNum); goto endjob; } @@ -5299,7 +5299,7 @@ qemuDomainPinEmulator(virDomainPtr dom, } if (newVcpuPin) - virDomainVcpuPinDefArrayFree(newVcpuPin, newVcpuPinNum); + virDomainPinDefArrayFree(newVcpuPin, newVcpuPinNum); } else { virReportError(VIR_ERR_OPERATION_INVALID, "%s", _("cpu affinity is not supported")); @@ -5886,8 +5886,8 @@ qemuDomainPinIOThread(virDomainPtr dom, } if (vm->def->cputune.iothreadspin) - virDomainVcpuPinDefArrayFree(vm->def->cputune.iothreadspin, - vm->def->cputune.niothreadspin); + virDomainPinDefArrayFree(vm->def->cputune.iothreadspin, + vm->def->cputune.niothreadspin); vm->def->cputune.iothreadspin = newIOThreadsPin; vm->def->cputune.niothreadspin = newIOThreadsPinNum; @@ -5947,7 +5947,7 @@ qemuDomainPinIOThread(virDomainPtr dom, cleanup: if (newIOThreadsPin) - virDomainVcpuPinDefArrayFree(newIOThreadsPin, newIOThreadsPinNum); + virDomainPinDefArrayFree(newIOThreadsPin, newIOThreadsPinNum); if (cgroup_iothread) virCgroupFree(&cgroup_iothread); if (event) -- 2.1.0

Make common between Vcpu and IOThreads Signed-off-by: John Ferlan <jferlan@redhat.com> --- src/conf/domain_conf.c | 8 ++++---- src/conf/domain_conf.h | 4 ++-- src/libvirt_private.syms | 2 +- src/qemu/qemu_driver.c | 9 ++++----- 4 files changed, 11 insertions(+), 12 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index e5a8011..63e7c77 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -2004,15 +2004,15 @@ virDomainClockDefClear(virDomainClockDefPtr def) } virDomainPinDefPtr * -virDomainVcpuPinDefCopy(virDomainPinDefPtr *src, int nvcpupin) +virDomainPinDefCopy(virDomainPinDefPtr *src, int npin) { size_t i; virDomainPinDefPtr *ret = NULL; - if (VIR_ALLOC_N(ret, nvcpupin) < 0) + if (VIR_ALLOC_N(ret, npin) < 0) goto error; - for (i = 0; i < nvcpupin; i++) { + for (i = 0; i < npin; i++) { if (VIR_ALLOC(ret[i]) < 0) goto error; ret[i]->id = src[i]->id; @@ -2024,7 +2024,7 @@ virDomainVcpuPinDefCopy(virDomainPinDefPtr *src, int nvcpupin) error: if (ret) { - for (i = 0; i < nvcpupin; i++) { + for (i = 0; i < npin; i++) { if (ret[i]) { virBitmapFree(ret[i]->cpumask); VIR_FREE(ret[i]); diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index a126668..5fc4074 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -1906,8 +1906,8 @@ struct _virDomainPinDef { void virDomainPinDefFree(virDomainPinDefPtr def); void virDomainPinDefArrayFree(virDomainPinDefPtr *def, int npin); -virDomainPinDefPtr *virDomainVcpuPinDefCopy(virDomainPinDefPtr *src, - int nvcpupin); +virDomainPinDefPtr *virDomainPinDefCopy(virDomainPinDefPtr *src, + int npin); int virDomainVcpuPinIsDuplicate(virDomainPinDefPtr *def, int nvcpupin, diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 8796b31..33a50a9 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -382,6 +382,7 @@ virDomainParseMemory; virDomainPausedReasonTypeFromString; virDomainPausedReasonTypeToString; virDomainPinDefArrayFree; +virDomainPinDefCopy; virDomainPinDefFree; virDomainPMSuspendedReasonTypeFromString; virDomainPMSuspendedReasonTypeToString; @@ -435,7 +436,6 @@ virDomainTPMDefFree; virDomainTPMModelTypeFromString; virDomainTPMModelTypeToString; virDomainVcpuPinAdd; -virDomainVcpuPinDefCopy; virDomainVcpuPinDel; virDomainVcpuPinFindByVcpu; virDomainVcpuPinIsDuplicate; diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index b3eacf8..0d6f367 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -4966,8 +4966,8 @@ qemuDomainPinVcpuFlags(virDomainPtr dom, } if (vm->def->cputune.vcpupin) { - newVcpuPin = virDomainVcpuPinDefCopy(vm->def->cputune.vcpupin, - vm->def->cputune.nvcpupin); + newVcpuPin = virDomainPinDefCopy(vm->def->cputune.vcpupin, + vm->def->cputune.nvcpupin); if (!newVcpuPin) goto endjob; @@ -5839,10 +5839,9 @@ qemuDomainPinIOThread(virDomainPtr dom, } if (vm->def->cputune.iothreadspin) { - /* The VcpuPinDefCopy works for IOThreads too */ newIOThreadsPin = - virDomainVcpuPinDefCopy(vm->def->cputune.iothreadspin, - vm->def->cputune.niothreadspin); + virDomainPinDefCopy(vm->def->cputune.iothreadspin, + vm->def->cputune.niothreadspin); if (!newIOThreadsPin) goto endjob; -- 2.1.0

Make common between Vcpu and IOThreads Signed-off-by: John Ferlan <jferlan@redhat.com> --- src/conf/domain_conf.c | 30 +++++++++++++++--------------- src/conf/domain_conf.h | 6 +++--- src/libvirt_private.syms | 2 +- 3 files changed, 19 insertions(+), 19 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 63e7c77..efc01bd 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -13469,9 +13469,9 @@ virDomainDefParseXML(xmlDocPtr xml, if (!vcpupin) goto error; - if (virDomainVcpuPinIsDuplicate(def->cputune.vcpupin, - def->cputune.nvcpupin, - vcpupin->id)) { + if (virDomainPinIsDuplicate(def->cputune.vcpupin, + def->cputune.nvcpupin, + vcpupin->id)) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("duplicate vcpupin for same vcpu")); virDomainPinDefFree(vcpupin); @@ -13500,9 +13500,9 @@ virDomainDefParseXML(xmlDocPtr xml, goto error; for (i = 0; i < def->vcpus; i++) { - if (virDomainVcpuPinIsDuplicate(def->cputune.vcpupin, - def->cputune.nvcpupin, - i)) + if (virDomainPinIsDuplicate(def->cputune.vcpupin, + def->cputune.nvcpupin, + i)) continue; virDomainPinDefPtr vcpupin = NULL; @@ -13561,9 +13561,9 @@ virDomainDefParseXML(xmlDocPtr xml, if (!iothreadpin) goto error; - if (virDomainVcpuPinIsDuplicate(def->cputune.iothreadspin, - def->cputune.niothreadspin, - iothreadpin->id)) { + if (virDomainPinIsDuplicate(def->cputune.iothreadspin, + def->cputune.niothreadspin, + iothreadpin->id)) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("duplicate iothreadpin for same iothread")); virDomainPinDefFree(iothreadpin); @@ -16675,17 +16675,17 @@ virDomainDefAddImplicitControllers(virDomainDefPtr def) /* Check if vcpupin with same id already exists. * Return 1 if exists, 0 if not. */ int -virDomainVcpuPinIsDuplicate(virDomainPinDefPtr *def, - int nvcpupin, - int vcpu) +virDomainPinIsDuplicate(virDomainPinDefPtr *def, + int npin, + int id) { size_t i; - if (!def || !nvcpupin) + if (!def || !npin) return 0; - for (i = 0; i < nvcpupin; i++) { - if (def[i]->id == vcpu) + for (i = 0; i < npin; i++) { + if (def[i]->id == id) return 1; } diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 5fc4074..0fb8d01 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -1909,9 +1909,9 @@ void virDomainPinDefArrayFree(virDomainPinDefPtr *def, int npin); virDomainPinDefPtr *virDomainPinDefCopy(virDomainPinDefPtr *src, int npin); -int virDomainVcpuPinIsDuplicate(virDomainPinDefPtr *def, - int nvcpupin, - int vcpu); +int virDomainPinIsDuplicate(virDomainPinDefPtr *def, + int npin, + int id); virDomainPinDefPtr virDomainVcpuPinFindByVcpu(virDomainPinDefPtr *def, int nvcpupin, diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 33a50a9..365430f 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -384,6 +384,7 @@ virDomainPausedReasonTypeToString; virDomainPinDefArrayFree; virDomainPinDefCopy; virDomainPinDefFree; +virDomainPinIsDuplicate; virDomainPMSuspendedReasonTypeFromString; virDomainPMSuspendedReasonTypeToString; virDomainRedirdevBusTypeFromString; @@ -438,7 +439,6 @@ virDomainTPMModelTypeToString; virDomainVcpuPinAdd; virDomainVcpuPinDel; virDomainVcpuPinFindByVcpu; -virDomainVcpuPinIsDuplicate; virDomainVideoDefaultRAM; virDomainVideoDefaultType; virDomainVideoDefFree; -- 2.1.0

Make common between Vcpu and IOThreads Signed-off-by: John Ferlan <jferlan@redhat.com> --- src/conf/domain_conf.c | 24 ++++++++++++------------ src/conf/domain_conf.h | 6 +++--- src/libvirt_private.syms | 2 +- src/qemu/qemu_driver.c | 12 ++++++------ src/qemu/qemu_process.c | 12 ++++++------ 5 files changed, 28 insertions(+), 28 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index efc01bd..75d75bc 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -16693,17 +16693,17 @@ virDomainPinIsDuplicate(virDomainPinDefPtr *def, } virDomainPinDefPtr -virDomainVcpuPinFindByVcpu(virDomainPinDefPtr *def, - int nvcpupin, - int vcpu) +virDomainPinFindByVcpu(virDomainPinDefPtr *def, + int npin, + int id) { size_t i; - if (!def || !nvcpupin) + if (!def || !npin) return NULL; - for (i = 0; i < nvcpupin; i++) { - if (def[i]->id == vcpu) + for (i = 0; i < npin; i++) { + if (def[i]->id == id) return def[i]; } @@ -16722,9 +16722,9 @@ virDomainVcpuPinAdd(virDomainPinDefPtr **vcpupin_list, if (!vcpupin_list) return -1; - vcpupin = virDomainVcpuPinFindByVcpu(*vcpupin_list, - *nvcpupin, - vcpu); + vcpupin = virDomainPinFindByVcpu(*vcpupin_list, + *nvcpupin, + vcpu); if (vcpupin) { vcpupin->id = vcpu; virBitmapFree(vcpupin->cpumask); @@ -16828,9 +16828,9 @@ virDomainIOThreadsPinAdd(virDomainPinDefPtr **iothreadspin_list, if (!iothreadspin_list) return -1; - iothreadpin = virDomainVcpuPinFindByVcpu(*iothreadspin_list, - *niothreadspin, - iothread_id); + iothreadpin = virDomainPinFindByVcpu(*iothreadspin_list, + *niothreadspin, + iothread_id); if (iothreadpin) { iothreadpin->id = iothread_id; virBitmapFree(iothreadpin->cpumask); diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 0fb8d01..fe61b9f 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -1913,9 +1913,9 @@ int virDomainPinIsDuplicate(virDomainPinDefPtr *def, int npin, int id); -virDomainPinDefPtr virDomainVcpuPinFindByVcpu(virDomainPinDefPtr *def, - int nvcpupin, - int vcpu); +virDomainPinDefPtr virDomainPinFindByVcpu(virDomainPinDefPtr *def, + int npin, + int id); typedef struct _virBlkioDevice virBlkioDevice; typedef virBlkioDevice *virBlkioDevicePtr; diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 365430f..540936f 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -384,6 +384,7 @@ virDomainPausedReasonTypeToString; virDomainPinDefArrayFree; virDomainPinDefCopy; virDomainPinDefFree; +virDomainPinFindByVcpu; virDomainPinIsDuplicate; virDomainPMSuspendedReasonTypeFromString; virDomainPMSuspendedReasonTypeToString; @@ -438,7 +439,6 @@ virDomainTPMModelTypeFromString; virDomainTPMModelTypeToString; virDomainVcpuPinAdd; virDomainVcpuPinDel; -virDomainVcpuPinFindByVcpu; virDomainVideoDefaultRAM; virDomainVideoDefaultType; virDomainVideoDefFree; diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 0d6f367..5d867c3 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -5143,9 +5143,9 @@ qemuDomainGetVcpuPinInfo(virDomainPtr dom, unsigned char *tmpmap = NULL; int tmpmaplen; - pininfo = virDomainVcpuPinFindByVcpu(targetDef->cputune.vcpupin, - targetDef->cputune.nvcpupin, - vcpu); + pininfo = virDomainPinFindByVcpu(targetDef->cputune.vcpupin, + targetDef->cputune.nvcpupin, + vcpu); if (!pininfo) { if (!(bitmap = virBitmapNew(hostcpus))) goto cleanup; @@ -5679,9 +5679,9 @@ qemuDomainGetIOThreadsConfig(virDomainDefPtr targetDef, info_ret[i]->iothread_id = i + 1; /* Initialize the cpumap */ - pininfo = virDomainVcpuPinFindByVcpu(targetDef->cputune.iothreadspin, - targetDef->cputune.niothreadspin, - i + 1); + pininfo = virDomainPinFindByVcpu(targetDef->cputune.iothreadspin, + targetDef->cputune.niothreadspin, + i + 1); if (!pininfo) { if (targetDef->cpumask) { cpumask = targetDef->cpumask; diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index 3eb0a6a..6c22a16 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -2519,9 +2519,9 @@ qemuProcessSetVcpuAffinities(virDomainObjPtr vm) for (n = 0; n < def->vcpus; n++) { /* set affinity only for existing vcpus */ - if (!(pininfo = virDomainVcpuPinFindByVcpu(def->cputune.vcpupin, - def->cputune.nvcpupin, - n))) + if (!(pininfo = virDomainPinFindByVcpu(def->cputune.vcpupin, + def->cputune.nvcpupin, + n))) continue; if (virProcessSetAffinity(priv->vcpupids[n], @@ -2575,9 +2575,9 @@ qemuProcessSetIOThreadsAffinity(virDomainObjPtr vm) for (i = 0; i < def->iothreads; i++) { /* set affinity only for existing vcpus */ - if (!(pininfo = virDomainVcpuPinFindByVcpu(def->cputune.iothreadspin, - def->cputune.niothreadspin, - i + 1))) + if (!(pininfo = virDomainPinFindByVcpu(def->cputune.iothreadspin, + def->cputune.niothreadspin, + i + 1))) continue; if (virProcessSetAffinity(priv->iothreadpids[i], pininfo->cpumask) < 0) -- 2.1.0

On Fri, Mar 13, 2015 at 11:11:52PM -0400, John Ferlan wrote:
Make common between Vcpu and IOThreads
I feel like this sentence is missing something.
Signed-off-by: John Ferlan <jferlan@redhat.com> --- src/conf/domain_conf.c | 24 ++++++++++++------------ src/conf/domain_conf.h | 6 +++--- src/libvirt_private.syms | 2 +- src/qemu/qemu_driver.c | 12 ++++++------ src/qemu/qemu_process.c | 12 ++++++------ 5 files changed, 28 insertions(+), 28 deletions(-)
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index efc01bd..75d75bc 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -16693,17 +16693,17 @@ virDomainPinIsDuplicate(virDomainPinDefPtr *def, }
virDomainPinDefPtr -virDomainVcpuPinFindByVcpu(virDomainPinDefPtr *def, - int nvcpupin, - int vcpu) +virDomainPinFindByVcpu(virDomainPinDefPtr *def, + int npin, + int id)
The second reference to Vcpu should be removed as well: virDomainPinFindById or even simpler: virDomainPinFind since I can't imagine doing a find according to any other attribute. Jan

Make common between Vcpu and IOThreads Signed-off-by: John Ferlan <jferlan@redhat.com> --- src/conf/domain_conf.c | 42 ++++++++++++++++++++---------------------- src/conf/domain_conf.h | 10 +++++----- src/libvirt_private.syms | 2 +- src/libxl/libxl_driver.c | 10 +++++----- src/qemu/qemu_driver.c | 16 ++++++++-------- src/xen/xend_internal.c | 10 +++++----- 6 files changed, 44 insertions(+), 46 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 75d75bc..4a9d083 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -16711,47 +16711,45 @@ virDomainPinFindByVcpu(virDomainPinDefPtr *def, } int -virDomainVcpuPinAdd(virDomainPinDefPtr **vcpupin_list, - size_t *nvcpupin, - unsigned char *cpumap, - int maplen, - int vcpu) +virDomainPinAdd(virDomainPinDefPtr **pindef_list, + size_t *npin, + unsigned char *cpumap, + int maplen, + int id) { - virDomainPinDefPtr vcpupin = NULL; + virDomainPinDefPtr pindef = NULL; - if (!vcpupin_list) + if (!pindef_list) return -1; - vcpupin = virDomainPinFindByVcpu(*vcpupin_list, - *nvcpupin, - vcpu); - if (vcpupin) { - vcpupin->id = vcpu; - virBitmapFree(vcpupin->cpumask); - vcpupin->cpumask = virBitmapNewData(cpumap, maplen); - if (!vcpupin->cpumask) + pindef = virDomainPinFindByVcpu(*pindef_list, *npin, id); + if (pindef) { + pindef->id = id; + virBitmapFree(pindef->cpumask); + pindef->cpumask = virBitmapNewData(cpumap, maplen); + if (!pindef->cpumask) return -1; return 0; } - /* No existing vcpupin matches vcpu, adding a new one */ + /* No existing pindef matches id, adding a new one */ - if (VIR_ALLOC(vcpupin) < 0) + if (VIR_ALLOC(pindef) < 0) goto error; - vcpupin->id = vcpu; - vcpupin->cpumask = virBitmapNewData(cpumap, maplen); - if (!vcpupin->cpumask) + pindef->id = id; + pindef->cpumask = virBitmapNewData(cpumap, maplen); + if (!pindef->cpumask) goto error; - if (VIR_APPEND_ELEMENT(*vcpupin_list, *nvcpupin, vcpupin) < 0) + if (VIR_APPEND_ELEMENT(*pindef_list, *npin, pindef) < 0) goto error; return 0; error: - virDomainPinDefFree(vcpupin); + virDomainPinDefFree(pindef); return -1; } diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index fe61b9f..10fdbb0 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -2549,11 +2549,11 @@ int virDomainDefCompatibleDevice(virDomainDefPtr def, virDomainDeviceDefPtr dev, virDomainDeviceAction action); -int virDomainVcpuPinAdd(virDomainPinDefPtr **vcpupin_list, - size_t *nvcpupin, - unsigned char *cpumap, - int maplen, - int vcpu); +int virDomainPinAdd(virDomainPinDefPtr **pindef_list, + size_t *npin, + unsigned char *cpumap, + int maplen, + int id); void virDomainVcpuPinDel(virDomainDefPtr def, int vcpu); diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 540936f..54c931e 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -381,6 +381,7 @@ virDomainObjTaint; virDomainParseMemory; virDomainPausedReasonTypeFromString; virDomainPausedReasonTypeToString; +virDomainPinAdd; virDomainPinDefArrayFree; virDomainPinDefCopy; virDomainPinDefFree; @@ -437,7 +438,6 @@ virDomainTPMBackendTypeToString; virDomainTPMDefFree; virDomainTPMModelTypeFromString; virDomainTPMModelTypeToString; -virDomainVcpuPinAdd; virDomainVcpuPinDel; virDomainVideoDefaultRAM; virDomainVideoDefaultType; diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c index 97ef2c9..d1addf5 100644 --- a/src/libxl/libxl_driver.c +++ b/src/libxl/libxl_driver.c @@ -1999,11 +1999,11 @@ libxlDomainPinVcpuFlags(virDomainPtr dom, unsigned int vcpu, goto endjob; targetDef->cputune.nvcpupin = 0; } - if (virDomainVcpuPinAdd(&targetDef->cputune.vcpupin, - &targetDef->cputune.nvcpupin, - cpumap, - maplen, - vcpu) < 0) { + if (virDomainPinAdd(&targetDef->cputune.vcpupin, + &targetDef->cputune.nvcpupin, + cpumap, + maplen, + vcpu) < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("failed to update or add vcpupin xml")); goto endjob; diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 5d867c3..3e40724 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -4978,8 +4978,8 @@ qemuDomainPinVcpuFlags(virDomainPtr dom, newVcpuPinNum = 0; } - if (virDomainVcpuPinAdd(&newVcpuPin, &newVcpuPinNum, - cpumap, maplen, vcpu) < 0) { + if (virDomainPinAdd(&newVcpuPin, &newVcpuPinNum, + cpumap, maplen, vcpu) < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("failed to update vcpupin")); goto endjob; @@ -5043,11 +5043,11 @@ qemuDomainPinVcpuFlags(virDomainPtr dom, goto endjob; persistentDef->cputune.nvcpupin = 0; } - if (virDomainVcpuPinAdd(&persistentDef->cputune.vcpupin, - &persistentDef->cputune.nvcpupin, - cpumap, - maplen, - vcpu) < 0) { + if (virDomainPinAdd(&persistentDef->cputune.vcpupin, + &persistentDef->cputune.nvcpupin, + cpumap, + maplen, + vcpu) < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("failed to update or add vcpupin xml of " "a persistent domain")); @@ -5255,7 +5255,7 @@ qemuDomainPinEmulator(virDomainPtr dom, if (VIR_ALLOC(newVcpuPin) < 0) goto endjob; - if (virDomainVcpuPinAdd(&newVcpuPin, &newVcpuPinNum, cpumap, maplen, -1) < 0) { + if (virDomainPinAdd(&newVcpuPin, &newVcpuPinNum, cpumap, maplen, -1) < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("failed to update vcpupin")); virDomainPinDefArrayFree(newVcpuPin, newVcpuPinNum); diff --git a/src/xen/xend_internal.c b/src/xen/xend_internal.c index 1722c3f..6c8ec7c 100644 --- a/src/xen/xend_internal.c +++ b/src/xen/xend_internal.c @@ -1897,11 +1897,11 @@ xenDaemonDomainPinVcpu(virConnectPtr conn, goto cleanup; def->cputune.nvcpupin = 0; } - if (virDomainVcpuPinAdd(&def->cputune.vcpupin, - &def->cputune.nvcpupin, - cpumap, - maplen, - vcpu) < 0) { + if (virDomainPinAdd(&def->cputune.vcpupin, + &def->cputune.nvcpupin, + cpumap, + maplen, + vcpu) < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("failed to add vcpupin xml entry")); return -1; -- 2.1.0

This one is no longer necessary Signed-off-by: John Ferlan <jferlan@redhat.com> --- src/conf/domain_conf.c | 45 --------------------------------------------- src/conf/domain_conf.h | 6 ------ src/libvirt_private.syms | 1 - src/qemu/qemu_driver.c | 14 +++++++------- 4 files changed, 7 insertions(+), 59 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 4a9d083..19aa6f6 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -16814,51 +16814,6 @@ virDomainEmulatorPinDel(virDomainDefPtr def) return 0; } -int -virDomainIOThreadsPinAdd(virDomainPinDefPtr **iothreadspin_list, - size_t *niothreadspin, - unsigned char *cpumap, - int maplen, - unsigned int iothread_id) -{ - virDomainPinDefPtr iothreadpin = NULL; - - if (!iothreadspin_list) - return -1; - - iothreadpin = virDomainPinFindByVcpu(*iothreadspin_list, - *niothreadspin, - iothread_id); - if (iothreadpin) { - iothreadpin->id = iothread_id; - virBitmapFree(iothreadpin->cpumask); - iothreadpin->cpumask = virBitmapNewData(cpumap, maplen); - if (!iothreadpin->cpumask) - return -1; - - return 0; - } - - /* No existing iothreadpin matches iothread_id, adding a new one */ - - if (VIR_ALLOC(iothreadpin) < 0) - goto error; - - iothreadpin->id = iothread_id; - iothreadpin->cpumask = virBitmapNewData(cpumap, maplen); - if (!iothreadpin->cpumask) - goto error; - - if (VIR_APPEND_ELEMENT(*iothreadspin_list, *niothreadspin, iothreadpin) < 0) - goto error; - - return 0; - - error: - virDomainPinDefFree(iothreadpin); - return -1; -} - void virDomainIOThreadsPinDel(virDomainDefPtr def, unsigned int iothread_id) diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 10fdbb0..1ba1ffe 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -2563,12 +2563,6 @@ int virDomainEmulatorPinAdd(virDomainDefPtr def, int virDomainEmulatorPinDel(virDomainDefPtr def); -int virDomainIOThreadsPinAdd(virDomainPinDefPtr **iothreadspin_list, - size_t *niothreads, - unsigned char *cpumap, - int maplen, - unsigned int iothread_id); - void virDomainIOThreadsPinDel(virDomainDefPtr def, unsigned int iothread_id); diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 54c931e..108e806 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -309,7 +309,6 @@ virDomainHubTypeToString; virDomainHypervTypeFromString; virDomainHypervTypeToString; virDomainInputDefFree; -virDomainIOThreadsPinAdd; virDomainIOThreadsPinDel; virDomainLeaseDefFree; virDomainLeaseIndex; diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 3e40724..db8cf4f 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -5852,8 +5852,8 @@ qemuDomainPinIOThread(virDomainPtr dom, newIOThreadsPinNum = 0; } - if (virDomainIOThreadsPinAdd(&newIOThreadsPin, &newIOThreadsPinNum, - cpumap, maplen, iothread_id) < 0) { + if (virDomainPinAdd(&newIOThreadsPin, &newIOThreadsPinNum, + cpumap, maplen, iothread_id) < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("failed to update iothreadspin")); goto endjob; @@ -5924,11 +5924,11 @@ qemuDomainPinIOThread(virDomainPtr dom, goto endjob; persistentDef->cputune.niothreadspin = 0; } - if (virDomainIOThreadsPinAdd(&persistentDef->cputune.iothreadspin, - &persistentDef->cputune.niothreadspin, - cpumap, - maplen, - iothread_id) < 0) { + if (virDomainPinAdd(&persistentDef->cputune.iothreadspin, + &persistentDef->cputune.niothreadspin, + cpumap, + maplen, + iothread_id) < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("failed to update or add iothreadspin xml " "of a persistent domain")); -- 2.1.0

Make common between Vcpu and IOThreads Signed-off-by: John Ferlan <jferlan@redhat.com> --- src/conf/domain_conf.c | 15 ++++++++------- src/conf/domain_conf.h | 4 +++- src/libvirt_private.syms | 2 +- src/libxl/libxl_driver.c | 4 +++- src/qemu/qemu_driver.c | 16 ++++++++++++---- 5 files changed, 27 insertions(+), 14 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 19aa6f6..24c0d8e 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -16754,16 +16754,17 @@ virDomainPinAdd(virDomainPinDefPtr **pindef_list, } void -virDomainVcpuPinDel(virDomainDefPtr def, int vcpu) +virDomainPinDel(virDomainPinDefPtr **pindef_list, + size_t *npin, + int id) { int n; - virDomainPinDefPtr *vcpupin_list = def->cputune.vcpupin; - for (n = 0; n < def->cputune.nvcpupin; n++) { - if (vcpupin_list[n]->id == vcpu) { - virBitmapFree(vcpupin_list[n]->cpumask); - VIR_FREE(vcpupin_list[n]); - VIR_DELETE_ELEMENT(def->cputune.vcpupin, n, def->cputune.nvcpupin); + for (n = 0; n < *npin; n++) { + if ((*pindef_list)[n]->id == id) { + virBitmapFree((*pindef_list)[n]->cpumask); + VIR_FREE((*pindef_list)[n]); + VIR_DELETE_ELEMENT(*pindef_list, n, *npin); return; } } diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 1ba1ffe..c10e080 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -2555,7 +2555,9 @@ int virDomainPinAdd(virDomainPinDefPtr **pindef_list, int maplen, int id); -void virDomainVcpuPinDel(virDomainDefPtr def, int vcpu); +void virDomainPinDel(virDomainPinDefPtr **pindef_list, + size_t *npin, + int vcpu); int virDomainEmulatorPinAdd(virDomainDefPtr def, unsigned char *cpumap, diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 108e806..c453fb8 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -384,6 +384,7 @@ virDomainPinAdd; virDomainPinDefArrayFree; virDomainPinDefCopy; virDomainPinDefFree; +virDomainPinDel; virDomainPinFindByVcpu; virDomainPinIsDuplicate; virDomainPMSuspendedReasonTypeFromString; @@ -437,7 +438,6 @@ virDomainTPMBackendTypeToString; virDomainTPMDefFree; virDomainTPMModelTypeFromString; virDomainTPMModelTypeToString; -virDomainVcpuPinDel; virDomainVideoDefaultRAM; virDomainVideoDefaultType; virDomainVideoDefFree; diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c index d1addf5..f738d8f 100644 --- a/src/libxl/libxl_driver.c +++ b/src/libxl/libxl_driver.c @@ -1990,7 +1990,9 @@ libxlDomainPinVcpuFlags(virDomainPtr dom, unsigned int vcpu, /* full bitmap means reset the settings (if any). */ if (virBitmapIsAllSet(pcpumap)) { - virDomainVcpuPinDel(targetDef, vcpu); + virDomainPinDel(&targetDef->cputune.vcpupin, + &targetDef->cputune.nvcpupin, + vcpu); goto done; } diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index db8cf4f..e4b6799 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -4656,7 +4656,9 @@ static int qemuDomainHotplugVcpus(virQEMUDriverPtr driver, } /* Free vcpupin setting */ - virDomainVcpuPinDel(vm->def, i); + virDomainPinDel(&vm->def->cputune.vcpupin, + &vm->def->cputune.nvcpupin, + i); } } @@ -4838,7 +4840,9 @@ qemuDomainSetVcpusFlags(virDomainPtr dom, unsigned int nvcpus, /* remove vcpupin entries for vcpus that were unplugged */ if (nvcpus < persistentDef->vcpus) { for (i = persistentDef->vcpus; i >= nvcpus; i--) - virDomainVcpuPinDel(persistentDef, i); + virDomainPinDel(&persistentDef->cputune.vcpupin, + &persistentDef->cputune.nvcpupin, + i); } if (maximum) { @@ -5006,7 +5010,9 @@ qemuDomainPinVcpuFlags(virDomainPtr dom, } if (doReset) { - virDomainVcpuPinDel(vm->def, vcpu); + virDomainPinDel(&vm->def->cputune.vcpupin, + &vm->def->cputune.nvcpupin, + vcpu); } else { if (vm->def->cputune.vcpupin) virDomainPinDefArrayFree(vm->def->cputune.vcpupin, @@ -5036,7 +5042,9 @@ qemuDomainPinVcpuFlags(virDomainPtr dom, if (flags & VIR_DOMAIN_AFFECT_CONFIG) { if (doReset) { - virDomainVcpuPinDel(persistentDef, vcpu); + virDomainPinDel(&persistentDef->cputune.vcpupin, + &persistentDef->cputune.nvcpupin, + vcpu); } else { if (!persistentDef->cputune.vcpupin) { if (VIR_ALLOC(persistentDef->cputune.vcpupin) < 0) -- 2.1.0

This one is no longer necessary Signed-off-by: John Ferlan <jferlan@redhat.com> --- src/conf/domain_conf.c | 17 ----------------- src/conf/domain_conf.h | 3 --- src/libvirt_private.syms | 1 - 3 files changed, 21 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 24c0d8e..cfb59ca 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -16815,23 +16815,6 @@ virDomainEmulatorPinDel(virDomainDefPtr def) return 0; } -void -virDomainIOThreadsPinDel(virDomainDefPtr def, - unsigned int iothread_id) -{ - size_t i; - virDomainPinDefPtr *iothreadspin_list = def->cputune.iothreadspin; - - for (i = 0; i < def->cputune.niothreadspin; i++) { - if (iothreadspin_list[i]->id == iothread_id) { - virBitmapFree(iothreadspin_list[i]->cpumask); - VIR_DELETE_ELEMENT(def->cputune.iothreadspin, i, - def->cputune.niothreadspin); - return; - } - } -} - static int virDomainEventActionDefFormat(virBufferPtr buf, int type, diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index c10e080..d88aca3 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -2565,9 +2565,6 @@ int virDomainEmulatorPinAdd(virDomainDefPtr def, int virDomainEmulatorPinDel(virDomainDefPtr def); -void virDomainIOThreadsPinDel(virDomainDefPtr def, - unsigned int iothread_id); - void virDomainRNGDefFree(virDomainRNGDefPtr def); bool virDomainDiskDefDstDuplicates(virDomainDefPtr def); diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index c453fb8..490c406 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -309,7 +309,6 @@ virDomainHubTypeToString; virDomainHypervTypeFromString; virDomainHypervTypeToString; virDomainInputDefFree; -virDomainIOThreadsPinDel; virDomainLeaseDefFree; virDomainLeaseIndex; virDomainLeaseInsert; -- 2.1.0

On Fri, Mar 13, 2015 at 11:11:44PM -0400, John Ferlan wrote:
During the review process a few things were pointed at as perhaps needing some adjustments based on what was done for IOThreads. Specifically a memory leak in PinVcpuFlags since PinIOThreads was just a copy of the Vcpu code and secondarily since the IOThreads code "reused" the virDomainVcpuPin* data structures and API's, those should change names to be more generic.
John Ferlan (12): qemu: Fix possible memory leak in qemuDomainPinVcpuFlags Convert virDomainVcpuPinDefPtr to virDomainPinDefPtr Convert virDomainPinDefPtr->vcpuid to virDomainPinDefPtr->id Convert virDomainVcpuPinDefFree to virDomainPinDefFree Convert virDomainVcpuPinDefArrayFree to virDomainPinDefArrayFree Convert virDomainVcpuPinDefCopy into virDomainPinDefCopy Convert virDomainVcpuPinIsDuplicate into virDomainPinIsDuplicate Convert virDomainVcpuPinFindByVcpu into virDomainPinFindByVcpu Replace virDomainVcpuPinAdd with virDomainPinAdd Replace virDomainIOThreadsPinAdd with virDomainPinAdd Replace virDomainVcpuPinDel with virDomainPinDel Remove virDomainIOThreadsPinDel
src/conf/domain_conf.c | 234 +++++++++++++++++------------------------------ src/conf/domain_conf.h | 58 +++++------- src/libvirt_private.syms | 16 ++-- src/libxl/libxl_domain.c | 2 +- src/libxl/libxl_driver.c | 18 ++-- src/qemu/qemu_cgroup.c | 12 +-- src/qemu/qemu_cgroup.h | 4 +- src/qemu/qemu_driver.c | 104 +++++++++++---------- src/qemu/qemu_process.c | 16 ++-- src/xen/xend_internal.c | 10 +- 10 files changed, 204 insertions(+), 270 deletions(-)
ACK series. Jan

On 03/13/2015 11:11 PM, John Ferlan wrote:
During the review process a few things were pointed at as perhaps needing some adjustments based on what was done for IOThreads. Specifically a memory leak in PinVcpuFlags since PinIOThreads was just a copy of the Vcpu code and secondarily since the IOThreads code "reused" the virDomainVcpuPin* data structures and API's, those should change names to be more generic.
John Ferlan (12): qemu: Fix possible memory leak in qemuDomainPinVcpuFlags Convert virDomainVcpuPinDefPtr to virDomainPinDefPtr Convert virDomainPinDefPtr->vcpuid to virDomainPinDefPtr->id Convert virDomainVcpuPinDefFree to virDomainPinDefFree Convert virDomainVcpuPinDefArrayFree to virDomainPinDefArrayFree Convert virDomainVcpuPinDefCopy into virDomainPinDefCopy Convert virDomainVcpuPinIsDuplicate into virDomainPinIsDuplicate Convert virDomainVcpuPinFindByVcpu into virDomainPinFindByVcpu Replace virDomainVcpuPinAdd with virDomainPinAdd Replace virDomainIOThreadsPinAdd with virDomainPinAdd Replace virDomainVcpuPinDel with virDomainPinDel Remove virDomainIOThreadsPinDel
src/conf/domain_conf.c | 234 +++++++++++++++++------------------------------ src/conf/domain_conf.h | 58 +++++------- src/libvirt_private.syms | 16 ++-- src/libxl/libxl_domain.c | 2 +- src/libxl/libxl_driver.c | 18 ++-- src/qemu/qemu_cgroup.c | 12 +-- src/qemu/qemu_cgroup.h | 4 +- src/qemu/qemu_driver.c | 104 +++++++++++---------- src/qemu/qemu_process.c | 16 ++-- src/xen/xend_internal.c | 10 +- 10 files changed, 204 insertions(+), 270 deletions(-)
Cleaned up patch 8 (virDomainVcpuPinFindByVcpu into virDomainPinFindByVcpu) to be virDomainVcpuPinFindByVcpu into virDomainPinFind Adjusted the terse commit comments a bit and pushed Thanks - John
participants (2)
-
John Ferlan
-
Ján Tomko