]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: alias: prepare qemuAssignDeviceFSAlias for disjunct ranges
authorJán Tomko <jtomko@redhat.com>
Tue, 17 Aug 2021 15:24:08 +0000 (17:24 +0200)
committerJán Tomko <jtomko@redhat.com>
Wed, 6 Oct 2021 10:03:12 +0000 (12:03 +0200)
Iterate through the array to find the first free index.

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

index 81a1e7eeed2fec2ed9738212fd8682a9008f3651..4153050bec84ff56b0aba434364579e620230641 100644 (file)
@@ -336,13 +336,23 @@ qemuAssignDeviceNetAlias(virDomainDef *def,
 
 
 static int
-qemuAssignDeviceFSAlias(virDomainFSDef *fss,
-                        int idx)
+qemuAssignDeviceFSAlias(virDomainDef *def,
+                        virDomainFSDef *fss)
 {
+    size_t i;
+    int maxidx = 0;
+
     if (fss->info.alias)
         return 0;
 
-    fss->info.alias = g_strdup_printf("fs%d", idx);
+    for (i = 0; i < def->nfss; i++) {
+        int idx;
+
+        if ((idx = qemuDomainDeviceAliasIndex(&def->fss[i]->info, "fs")) >= maxidx)
+            maxidx = idx + 1;
+    }
+
+    fss->info.alias = g_strdup_printf("fs%d", maxidx);
     return 0;
 }
 
@@ -634,7 +644,7 @@ qemuAssignDeviceAliases(virDomainDef *def, virQEMUCaps *qemuCaps)
     }
 
     for (i = 0; i < def->nfss; i++) {
-        if (qemuAssignDeviceFSAlias(def->fss[i], i) < 0)
+        if (qemuAssignDeviceFSAlias(def, def->fss[i]) < 0)
             return -1;
     }
     for (i = 0; i < def->nsounds; i++) {