[libvirt] [PATCH 4/9] virDomainRedirdevDef: Introduce find & remove routines

Peter Krempa pkrempa at redhat.com
Fri Jun 10 08:06:11 UTC 2016


On Thu, Jun 09, 2016 at 17:02:39 +0200, Michal Privoznik wrote:
> Basically, there are just two functions introduced here:
> virDomainRedirdevDefFind which looks up given redirdev in domain
> definition, and virDomainRedirdevDefRemove which removes the
> device at given index in the array of devices.
> 
> Signed-off-by: Michal Privoznik <mprivozn at redhat.com>
> ---
>  src/conf/domain_conf.c   | 44 ++++++++++++++++++++++++++++++++++++++++++++
>  src/conf/domain_conf.h   |  4 ++++
>  src/libvirt_private.syms |  2 ++
>  3 files changed, 50 insertions(+)
> 
> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> index 8f5935c..7b2ff98 100644
> --- a/src/conf/domain_conf.c
> +++ b/src/conf/domain_conf.c
> @@ -14597,6 +14597,50 @@ virDomainMemoryRemove(virDomainDefPtr def,
>  }
>  
>  
> +ssize_t
> +virDomainRedirdevDefFind(virDomainDefPtr def,
> +                         virDomainRedirdevDefPtr redirdev)
> +{
> +    size_t i;
> +
> +    for (i = 0; i < def->nredirdevs; i++) {
> +        virDomainRedirdevDefPtr tmp = def->redirdevs[i];
> +
> +        if (redirdev->bus != tmp->bus)
> +            continue;
> +
> +        if (!virDomainChrSourceDefIsEqual(&redirdev->source.chr,
> +                                          &tmp->source.chr))
> +            continue;
> +
> +        if (redirdev->info.type != VIR_DOMAIN_DEVICE_ADDRESS_TYPE_NONE &&
> +            !virDomainDeviceInfoAddressIsEqual(&redirdev->info, &tmp->info))
> +            continue;
> +
> +        if (STRNEQ_NULLABLE(redirdev->info.alias, tmp->info.alias))
> +            continue;

I don't think we currently match the alias across our device finding
functions. The reason for that is that you won't be able to unplug the
device with --live --config specified for virsh or the corresponding
flag values as the inactive device doesn't have an alias.


> +
> +        break;


You can "return i" right away since you already found the device.

> +    }
> +
> +    if (i < def->nredirdevs)
> +        return i;

This is then not necessary

> +
> +    return -1;
> +}




More information about the libvir-list mailing list