[libvirt PATCH 10/16] qemu: alias: prepare qemuAssignDeviceFSAlias for disjunct ranges

Ján Tomko posted 16 patches 4 years, 4 months ago
There is a newer version of this series
[libvirt PATCH 10/16] qemu: alias: prepare qemuAssignDeviceFSAlias for disjunct ranges
Posted by Ján Tomko 4 years, 4 months ago
Iterate through the array to find the first free index.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
---
 src/qemu/qemu_alias.c | 18 ++++++++++++++----
 1 file changed, 14 insertions(+), 4 deletions(-)

diff --git a/src/qemu/qemu_alias.c b/src/qemu/qemu_alias.c
index 81a1e7eeed..4153050bec 100644
--- a/src/qemu/qemu_alias.c
+++ b/src/qemu/qemu_alias.c
@@ -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++) {
-- 
2.31.1

Re: [libvirt PATCH 10/16] qemu: alias: prepare qemuAssignDeviceFSAlias for disjunct ranges
Posted by Peter Krempa 4 years, 4 months ago
On Wed, Oct 06, 2021 at 09:15:16 +0200, Ján Tomko wrote:
> Iterate through the array to find the first free index.
> 
> Signed-off-by: Ján Tomko <jtomko@redhat.com>
> ---
>  src/qemu/qemu_alias.c | 18 ++++++++++++++----
>  1 file changed, 14 insertions(+), 4 deletions(-)
> 
> diff --git a/src/qemu/qemu_alias.c b/src/qemu/qemu_alias.c
> index 81a1e7eeed..4153050bec 100644
> --- a/src/qemu/qemu_alias.c
> +++ b/src/qemu/qemu_alias.c
> @@ -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;

Are other devices also n^2 during startup of the VM?

Re: [libvirt PATCH 10/16] qemu: alias: prepare qemuAssignDeviceFSAlias for disjunct ranges
Posted by Ján Tomko 4 years, 4 months ago
On a Wednesday in 2021, Peter Krempa wrote:
>On Wed, Oct 06, 2021 at 09:15:16 +0200, Ján Tomko wrote:
>> Iterate through the array to find the first free index.
>>
>> Signed-off-by: Ján Tomko <jtomko@redhat.com>
>> ---
>>  src/qemu/qemu_alias.c | 18 ++++++++++++++----
>>  1 file changed, 14 insertions(+), 4 deletions(-)
>>
>> diff --git a/src/qemu/qemu_alias.c b/src/qemu/qemu_alias.c
>> index 81a1e7eeed..4153050bec 100644
>> --- a/src/qemu/qemu_alias.c
>> +++ b/src/qemu/qemu_alias.c
>> @@ -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;
>
>Are other devices also n^2 during startup of the VM?
>

For the alias assingment, many of the hotpluggable ones are.

Don't know about the rest of the startup code.

Jano