[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