From: Peter Krempa Date: Fri, 14 Feb 2025 11:13:02 +0000 (+0100) Subject: hypervisor: domain: Extract code for checking iothread usage X-Git-Tag: v11.1.0-rc1~23 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3313ab39325ae3d46af885ee9bde71bb3b37d7d2;p=thirdparty%2Flibvirt.git hypervisor: domain: Extract code for checking iothread usage The code will be also needed for 'virtio-scsi' controller definitions. Signed-off-by: Peter Krempa Reviewed-by: Ján Tomko --- diff --git a/src/hypervisor/domain_driver.c b/src/hypervisor/domain_driver.c index 9fbfec9f04..b7499a376f 100644 --- a/src/hypervisor/domain_driver.c +++ b/src/hypervisor/domain_driver.c @@ -537,6 +537,23 @@ virDomainDriverAddIOThreadCheck(virDomainDef *def, return 0; } + +static bool +virDomainIothreadMappingDefHasIothread(GSList *iothreads, + unsigned int iothread_id) +{ + GSList *n; + + for (n = iothreads; n; n = n->next) { + virDomainIothreadMappingDef *iothread = n->data; + + if (iothread->id == iothread_id) + return true; + } + + return false; +} + /** * virDomainDriverDelIOThreadCheck: * @def: domain definition @@ -558,19 +575,7 @@ virDomainDriverDelIOThreadCheck(virDomainDef *def, } for (i = 0; i < def->ndisks; i++) { - GSList *n; - bool inuse = false; - - for (n = def->disks[i]->iothreads; n; n = n->next) { - virDomainIothreadMappingDef *iothread = n->data; - - if (iothread->id == iothread_id) { - inuse = true; - break; - } - } - - if (inuse || + if (virDomainIothreadMappingDefHasIothread(def->disks[i]->iothreads, iothread_id) || def->disks[i]->iothread == iothread_id) { virReportError(VIR_ERR_INVALID_ARG, _("cannot remove IOThread %1$u since it is being used by disk '%2$s'"),