Signed-off-by: Pavel Hrdina <phrdina(a)redhat.com>
---
src/conf/domain_conf.c | 32 +++++++++++++++++---------------
src/conf/domain_conf.h | 1 -
src/qemu/qemu_driver.c | 6 ------
src/qemu/qemu_process.c | 1 -
4 files changed, 17 insertions(+), 23 deletions(-)
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index a179c1e278..71cd572a30 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -2558,7 +2558,8 @@ virDomainIOThreadIDDefArrayFree(virDomainIOThreadIDDefPtr *def,
static int
-virDomainIOThreadIDDefArrayInit(virDomainDefPtr def)
+virDomainIOThreadIDDefArrayInit(virDomainDefPtr def,
+ unsigned int iothreads)
{
int retval = -1;
size_t i;
@@ -2569,11 +2570,11 @@ virDomainIOThreadIDDefArrayInit(virDomainDefPtr def)
/* Same value (either 0 or some number), then we have none to fill in or
* the iothreadid array was filled from the XML
*/
- if (def->iothreads == def->niothreadids)
+ if (iothreads == def->niothreadids)
return 0;
/* iothread's are numbered starting at 1, account for that */
- if (!(thrmap = virBitmapNew(def->iothreads + 1)))
+ if (!(thrmap = virBitmapNew(iothreads + 1)))
goto error;
virBitmapSetAll(thrmap);
@@ -2585,11 +2586,11 @@ virDomainIOThreadIDDefArrayInit(virDomainDefPtr def)
def->iothreadids[i]->iothread_id));
/* resize array */
- if (VIR_REALLOC_N(def->iothreadids, def->iothreads) < 0)
+ if (VIR_REALLOC_N(def->iothreadids, iothreads) < 0)
goto error;
/* Populate iothreadids[] using the set bit number from thrmap */
- while (def->niothreadids < def->iothreads) {
+ while (def->niothreadids < iothreads) {
if ((nxt = virBitmapNextSetBit(thrmap, nxt)) < 0) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("failed to populate iothreadids"));
@@ -16755,8 +16756,9 @@ virDomainDefParseXML(xmlDocPtr xml,
goto error;
/* Optional - iothreads */
+ unsigned int iothreads;
tmp = virXPathString("string(./iothreads[1])", ctxt);
- if (tmp && virStrToLong_uip(tmp, NULL, 10, &def->iothreads) < 0) {
+ if (tmp && virStrToLong_uip(tmp, NULL, 10, &iothreads) < 0) {
virReportError(VIR_ERR_XML_ERROR,
_("invalid iothreads count '%s'"), tmp);
goto error;
@@ -16767,8 +16769,8 @@ virDomainDefParseXML(xmlDocPtr xml,
if ((n = virXPathNodeSet("./iothreadids/iothread", ctxt, &nodes)) <
0)
goto error;
- if (n > def->iothreads)
- def->iothreads = n;
+ if (n > iothreads)
+ iothreads = n;
if (n && VIR_ALLOC_N(def->iothreadids, n) < 0)
goto error;
@@ -16789,7 +16791,7 @@ virDomainDefParseXML(xmlDocPtr xml,
}
VIR_FREE(nodes);
- if (virDomainIOThreadIDDefArrayInit(def) < 0)
+ if (virDomainIOThreadIDDefArrayInit(def, iothreads) < 0)
goto error;
/* Extract cpu tunables. */
@@ -19487,11 +19489,11 @@ virDomainDefCheckABIStabilityFlags(virDomainDefPtr src,
if (!virDomainDefVcpuCheckAbiStability(src, dst))
goto error;
- if (src->iothreads != dst->iothreads) {
+ if (src->niothreadids != dst->niothreadids) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
- _("Target domain iothreads count %u does not "
- "match source %u"),
- dst->iothreads, src->iothreads);
+ _("Target domain iothreads count %lu does not "
+ "match source %lu"),
+ dst->niothreadids, src->niothreadids);
goto error;
}
@@ -23812,8 +23814,8 @@ virDomainDefFormatInternal(virDomainDefPtr def,
goto error;
if (def->niothreadids > 0) {
- virBufferAsprintf(buf, "<iothreads>%u</iothreads>\n",
- def->iothreads);
+ virBufferAsprintf(buf, "<iothreads>%lu</iothreads>\n",
+ def->niothreadids);
/* Only print out iothreadids if we read at least one */
for (i = 0; i < def->niothreadids; i++) {
if (!def->iothreadids[i]->autofill)
diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
index dd79206f69..8ff2de8c25 100644
--- a/src/conf/domain_conf.h
+++ b/src/conf/domain_conf.h
@@ -2210,7 +2210,6 @@ struct _virDomainDef {
int placement_mode;
virBitmapPtr cpumask;
- unsigned int iothreads;
size_t niothreadids;
virDomainIOThreadIDDefPtr *iothreadids;
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index afbcded93f..661f6f5d34 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -5617,10 +5617,8 @@ qemuDomainHotplugAddIOThread(virQEMUDriverPtr driver,
_("got wrong number of IOThread ids from QEMU monitor.
"
"got %d, wanted %d"),
new_niothreads, exp_niothreads);
- vm->def->iothreads = new_niothreads;
goto cleanup;
}
- vm->def->iothreads = exp_niothreads;
/*
* If we've successfully added an IOThread, find out where we added it
@@ -5716,10 +5714,8 @@ qemuDomainHotplugDelIOThread(virQEMUDriverPtr driver,
_("got wrong number of IOThread ids from QEMU monitor.
"
"got %d, wanted %d"),
new_niothreads, exp_niothreads);
- vm->def->iothreads = new_niothreads;
goto cleanup;
}
- vm->def->iothreads = exp_niothreads;
virDomainIOThreadIDDel(vm->def, iothread_id);
@@ -5798,7 +5794,6 @@ qemuDomainChgIOThread(virQEMUDriverPtr driver,
if (!virDomainIOThreadIDAdd(persistentDef, iothread_id))
goto endjob;
- persistentDef->iothreads++;
} else {
virDomainIOThreadIDDefPtr iothrid;
if (!(iothrid = virDomainIOThreadIDFind(persistentDef,
@@ -5811,7 +5806,6 @@ qemuDomainChgIOThread(virQEMUDriverPtr driver,
}
virDomainIOThreadIDDel(persistentDef, iothread_id);
- persistentDef->iothreads--;
}
if (virDomainSaveConfig(cfg->configDir, driver->caps,
diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
index 76f132bc8f..62f0b9b630 100644
--- a/src/qemu/qemu_process.c
+++ b/src/qemu/qemu_process.c
@@ -2123,7 +2123,6 @@ qemuProcessDetectIOThreadPIDs(virQEMUDriverPtr driver,
/* Remove any trace */
VIR_FREE(vm->def->iothreadids);
vm->def->niothreadids = 0;
- vm->def->iothreads = 0;
}
return 0;
}
--
2.11.1