From 897c972a96c304c36bb515235f4b1552d7a5337b Mon Sep 17 00:00:00 2001 From: John Ferlan Date: Tue, 13 Oct 2015 08:22:14 -0400 Subject: [PATCH] conf: Refactor the iothreadid initialization Create a separate local API that will fill in the iothreadid array entries that were not defined by entries in the XML. Signed-off-by: John Ferlan --- src/conf/domain_conf.c | 47 ++++++++++++++++++++++++++++-------------- 1 file changed, 31 insertions(+), 16 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 65e0d8ea90..217179dc15 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -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))) - goto error; - iothrid->autofill = true; - } - iothread_id++; - } - } + if (virDomainIOThreadIDDefArrayInit(def) < 0) + goto error; /* Extract cpu tunables. */ if ((n = virXPathULong("string(./cputune/shares[1])", ctxt, -- GitLab