On Fri, Apr 24, 2015 at 12:06:00 -0400, John Ferlan wrote: > We're about to allow IOThreads to be deleted, but an iothreadid may be > included in some domain thread sched, so add a new API to allow removing > an iothread from some entry. > > Then during the writing of the threadsched data and an additional check > to determine whether the bitmap is all clear before writing it out. > > Signed-off-by: John Ferlan <jferlan@xxxxxxxxxx> > --- > src/conf/domain_conf.c | 20 ++++++++++++++++++++ > src/conf/domain_conf.h | 1 + > src/libvirt_private.syms | 1 + > 3 files changed, 22 insertions(+) > > diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c > index 9d4c916..5f99fbd 100644 > --- a/src/conf/domain_conf.c > +++ b/src/conf/domain_conf.c > @@ -17455,6 +17455,24 @@ virDomainIOThreadIDDel(virDomainDefPtr def, > } > } > > +void > +virDomainIOThreadSchedDelId(virDomainDefPtr def, > + unsigned int iothreadid) > +{ > + size_t i; > + > + if (!def->cputune.iothreadsched || !def->cputune.niothreadsched) > + return; > + > + for (i = 0; i < def->cputune.niothreadsched; i++) { > + if (virBitmapIsBitSet(def->cputune.iothreadsched[i].ids, iothreadid)) { > + ignore_value(virBitmapClearBit(def->cputune.iothreadsched[i].ids, > + iothreadid)); > + return; > + } This function will need to remove the bitmap from the array once it's clear, as ... > + } > +} > + > virDomainPinDefPtr > virDomainPinFind(virDomainPinDefPtr *def, > int npin, > @@ -20897,6 +20915,8 @@ virDomainDefFormatInternal(virDomainDefPtr def, > virDomainThreadSchedParamPtr sp = &def->cputune.iothreadsched[i]; > char *ids = NULL; > > + if (virBitmapIsAllClear(sp->ids)) > + continue; ... this check isn't enough not to oputput empty <cputune> element if you removed the last iothread that would have any info that would trigger cputune to be formatted. The chance to have such situation is extremely slim, but possible. > if (!(ids = virBitmapFormat(sp->ids))) > goto error; > virBufferAsprintf(buf, "<iothreadsched iothreads='%s' scheduler='%s'", Peter
Attachment:
signature.asc
Description: Digital signature
-- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list