[libvirt] [PATCH v5 08/10] domain: Introduce virDomainIOThreadSchedDelId
Peter Krempa
pkrempa at redhat.com
Mon Apr 27 14:35:13 UTC 2015
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 at redhat.com>
> ---
> 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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20150427/70898525/attachment-0001.sig>
More information about the libvir-list
mailing list