[libvirt] [PATCH] Add redirdevs to ABI stability check

Michal Privoznik mprivozn at redhat.com
Thu Apr 3 13:02:59 UTC 2014


On 02.04.2014 14:03, Ján Tomko wrote:
> Check the bus, type of the source device (tcp vs. spicevmc)
> and the device address visible in the guest.
>
> https://bugzilla.redhat.com/show_bug.cgi?id=1035128
> ---
>   src/conf/domain_conf.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++
>   1 file changed, 50 insertions(+)
>
> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> index 0af5be7..9f1c020 100644
> --- a/src/conf/domain_conf.c
> +++ b/src/conf/domain_conf.c
> @@ -13693,6 +13693,42 @@ virDomainHubDefCheckABIStability(virDomainHubDefPtr src,
>       return true;
>   }
>
> +
> +static bool
> +virDomainRedirdevDefCheckABIStability(virDomainRedirdevDefPtr src,
> +                                      virDomainRedirdevDefPtr dst)
> +{
> +    if (src->bus != dst->bus) {
> +        virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
> +                       _("Target redirected device bus %s does not match "
> +                         "source %s"),
> +                       virDomainRedirdevBusTypeToString(dst->bus),
> +                       virDomainRedirdevBusTypeToString(src->bus));
> +        return false;
> +    }
> +
> +    switch ((enum virDomainRedirdevBus) src->bus) {
> +    case VIR_DOMAIN_REDIRDEV_BUS_USB:
> +        if (src->source.chr.type != dst->source.chr.type) {
> +            virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
> +                           _("Target redirected device source type %s does "
> +                             "not match source device source type %s"),
> +                           virDomainChrTypeToString(dst->source.chr.type),
> +                           virDomainChrTypeToString(src->source.chr.type));
> +            return false;
> +        }
> +        break;
> +    case VIR_DOMAIN_REDIRDEV_BUS_LAST:
> +        break;
> +    }
> +
> +    if (!virDomainDeviceInfoCheckABIStability(&src->info, &dst->info))
> +        return false;
> +
> +    return true;
> +}
> +
> +
>   static bool
>   virDomainRedirFilterDefCheckABIStability(virDomainRedirFilterDefPtr src,
>                                            virDomainRedirFilterDefPtr dst)
> @@ -14133,6 +14169,20 @@ virDomainDefCheckABIStability(virDomainDefPtr src,
>           if (!virDomainHubDefCheckABIStability(src->hubs[i], dst->hubs[i]))
>               goto error;
>
> +    if (src->nredirdevs != dst->nredirdevs) {
> +        virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
> +                       _("Target domain redirected devices count %zu "
> +                         "does not match source %zu"),
> +                       dst->nconsoles, src->nconsoles);
> +        goto error;
> +    }
> +
> +    for (i = 0; i < src->nredirdevs; i++) {
> +        if (!virDomainRedirdevDefCheckABIStability(src->redirdevs[i],
> +                                                   dst->redirdevs[i]))
> +            goto error;
> +    }
> +
>       if ((!src->redirfilter && dst->redirfilter) ||
>           (src->redirfilter && !dst->redirfilter)) {
>           virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
>

ACK

Michal




More information about the libvir-list mailing list