提交 897c972a 编写于 作者: J John Ferlan

conf: Refactor the iothreadid initialization

Create a separate local API that will fill in the iothreadid array
entries that were not defined by <iothread id='#'> entries in the XML.
Signed-off-by: NJohn Ferlan <jferlan@redhat.com>
上级 0331da65
......@@ -2329,6 +2329,35 @@ virDomainIOThreadIDDefArrayFree(virDomainIOThreadIDDefPtr *def,
}
static int
virDomainIOThreadIDDefArrayInit(virDomainDefPtr def)
{
unsigned int iothread_id = 1;
int retval = -1;
/* 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)
return 0;
while (def->niothreadids != def->iothreads) {
if (!virDomainIOThreadIDFind(def, iothread_id)) {
virDomainIOThreadIDDefPtr iothrid;
if (!(iothrid = virDomainIOThreadIDAdd(def, iothread_id)))
goto error;
iothrid->autofill = true;
}
iothread_id++;
}
retval = 0;
error:
return retval;
}
void
virDomainPinDefFree(virDomainPinDefPtr def)
{
......@@ -14979,22 +15008,8 @@ virDomainDefParseXML(xmlDocPtr xml,
}
VIR_FREE(nodes);
/* If no iothreadid's or not fully populated, let's finish the job
* here rather than in PostParseCallback
*/
if (def->iothreads && def->iothreads != def->niothreadids) {
unsigned int iothread_id = 1;
while (def->niothreadids != def->iothreads) {
if (!virDomainIOThreadIDFind(def, iothread_id)) {
virDomainIOThreadIDDefPtr iothrid;
if (!(iothrid = virDomainIOThreadIDAdd(def, iothread_id)))
if (virDomainIOThreadIDDefArrayInit(def) < 0)
goto error;
iothrid->autofill = true;
}
iothread_id++;
}
}
/* Extract cpu tunables. */
if ((n = virXPathULong("string(./cputune/shares[1])", ctxt,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册