]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
hypervisor: domain: Extract code for checking iothread usage
authorPeter Krempa <pkrempa@redhat.com>
Fri, 14 Feb 2025 11:13:02 +0000 (12:13 +0100)
committerPeter Krempa <pkrempa@redhat.com>
Thu, 20 Feb 2025 14:21:44 +0000 (15:21 +0100)
The code will be also needed for 'virtio-scsi' controller definitions.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/hypervisor/domain_driver.c

index 9fbfec9f04c0d32a85826da1b96a9b4aa1ee0639..b7499a376ff3eb06a4e354dbba8a4be349cb378f 100644 (file)
@@ -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'"),