[PATCH v2 2/7] conf: expand iotune params if only group name is given

Nikolay Shirokovskiy nshirokovskiy at virtuozzo.com
Wed Jan 29 08:37:20 UTC 2020



On 29.01.2020 10:54, Michal Privoznik wrote:
> From: Nikolay Shirokovskiy <nshirokovskiy at virtuozzo.com>
> 
> Currently, if only iotune group name is given for some disk and
> no any params then later start of domain will fail. I guess it
> will be convenient to allow such configuration if there is
> another disk in the same iotune group with iotune params set. The
> meaning is that the first disk have same iotunes and the latter.
> Thus one can easily add a disk to iotune group - just add group
> name parameter and no need to copy all the params.
> 
> Also let's expand iotunes params in the described case so we don't
> need to refer to another disk to know iotunes and this will make
> logic in many places simple.
> 
> Signed-off-by: Nikolay Shirokovskiy <nshirokovskiy at virtuozzo.com>
> Signed-off-by: Michal Privoznik <mprivozn at redhat.com>
> ---
>  src/conf/domain_conf.c | 27 +++++++++++++++++++++++++++
>  1 file changed, 27 insertions(+)
> 
> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> index c77901dfa0..0eeffb6ed0 100644
> --- a/src/conf/domain_conf.c
> +++ b/src/conf/domain_conf.c
> @@ -5110,6 +5110,31 @@ virDomainRNGDefPostParse(virDomainRNGDefPtr rng)
>  }
>  
>  
> +static void
> +virDomainDiskExpandGroupIoTune(virDomainDiskDefPtr disk,
> +                               const virDomainDef *def)
> +{
> +    size_t i;
> +
> +    if (!disk->blkdeviotune.group_name ||
> +        virDomainBlockIoTuneInfoHasAny(&disk->blkdeviotune))
> +        return;
> +
> +    for (i = 0; i < def->ndisks; i++) {
> +        virDomainDiskDefPtr d = def->disks[i];
> +        char *tmp = disk->blkdeviotune.group_name;
> +
> +        if (STRNEQ_NULLABLE(disk->blkdeviotune.group_name, d->blkdeviotune.group_name) ||
> +            !virDomainBlockIoTuneInfoHasAny(&d->blkdeviotune))
> +            continue;
> +
> +        disk->blkdeviotune = d->blkdeviotune;
> +        disk->blkdeviotune.group_name = tmp;

We can use virDomainBlockIoTuneInfoCopy here too. And it makes sense to add freeing of group_name
in the copy function then I guess. Everything else is fine.

Nikolay

> +        return;
> +    }
> +}
> +
> +
>  static int
>  virDomainDiskDefPostParse(virDomainDiskDefPtr disk,
>                            const virDomainDef *def,
> @@ -5155,6 +5180,8 @@ virDomainDiskDefPostParse(virDomainDiskDefPtr disk,
>          return -1;
>      }
>  
> +    virDomainDiskExpandGroupIoTune(disk, def);
> +
>      return 0;
>  }
>  
> 




More information about the libvir-list mailing list