diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 20003a706b3387112fa4be89a9fd4effa59873da..56bfd7634eb3936b82f38e1c179cf110f5e9f08a 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -2559,7 +2559,8 @@ virDomainIOThreadIDDefArrayFree(virDomainIOThreadIDDefPtr *def, static int -virDomainIOThreadIDDefArrayInit(virDomainDefPtr def) +virDomainIOThreadIDDefArrayInit(virDomainDefPtr def, + unsigned int iothreads) { int retval = -1; size_t i; @@ -2570,11 +2571,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); @@ -2586,11 +2587,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")); @@ -16433,6 +16434,7 @@ virDomainDefParseXML(xmlDocPtr xml, bool usb_other = false; bool usb_master = false; char *netprefix = NULL; + unsigned int iothreads = 0; if (flags & VIR_DOMAIN_DEF_PARSE_VALIDATE_SCHEMA) { char *schema = virFileFindResource("domain.rng", @@ -16762,7 +16764,7 @@ virDomainDefParseXML(xmlDocPtr xml, /* Optional - 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; @@ -16773,8 +16775,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; @@ -16795,7 +16797,7 @@ virDomainDefParseXML(xmlDocPtr xml, } VIR_FREE(nodes); - if (virDomainIOThreadIDDefArrayInit(def) < 0) + if (virDomainIOThreadIDDefArrayInit(def, iothreads) < 0) goto error; /* Extract cpu tunables. */ @@ -19493,11 +19495,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; } @@ -23828,8 +23830,8 @@ virDomainDefFormatInternal(virDomainDefPtr def, goto error; if (def->niothreadids > 0) { - virBufferAsprintf(buf, "%u\n", - def->iothreads); + virBufferAsprintf(buf, "%lu\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 7e1afa47516bd7e45c6d2cc5b72978add53b6bef..1e53cc3280212f3d5fdf5244e0f2782728fe89b6 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -2211,7 +2211,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 afbcded93ffa7df6953392f15fca8f58e5e11cbd..661f6f5d34ba12943e26d9e67839b9056c55e807 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 76f132bc8fc74c68a74824c956a66e93d5ec0d63..62f0b9b630cdf7dba4905c3ad90461e1c669c7a6 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; }