[libvirt] [PATCH v4 07/14] conf: Enable cold-plug of a mediated device

Laine Stump laine at laine.org
Sun Mar 26 18:28:57 UTC 2017


On 03/22/2017 11:27 AM, Erik Skultety wrote:
> This merely introduces virDomainHostdevMatchSubsysMediatedDev method that
> is supposed to check whether device being cold-plugged does not already
> exist in the domain configuration.
> 
> Signed-off-by: Erik Skultety <eskultet at redhat.com>
> ---
>  src/conf/domain_conf.c | 14 ++++++++++++++
>  1 file changed, 14 insertions(+)
> 
> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> index 63ac65e8ab..a4ed605c27 100644
> --- a/src/conf/domain_conf.c
> +++ b/src/conf/domain_conf.c
> @@ -14375,6 +14375,19 @@ virDomainHostdevMatchSubsysSCSIiSCSI(virDomainHostdevDefPtr first,
>  }
>  
>  static int
> +virDomainHostdevMatchSubsysMediatedDev(virDomainHostdevDefPtr a,
> +                                       virDomainHostdevDefPtr b)
> +{
> +    virDomainHostdevSubsysMediatedDevPtr src_a = &a->source.subsys.u.mdev;
> +    virDomainHostdevSubsysMediatedDevPtr src_b = &b->source.subsys.u.mdev;
> +
> +    if (STREQ(src_a->uuidstr, src_b->uuidstr))
> +        return 1;
> +
> +    return 0;
> +}
> +
> +static int
>  virDomainHostdevMatchSubsys(virDomainHostdevDefPtr a,
>                              virDomainHostdevDefPtr b)
>  {
> @@ -14405,6 +14418,7 @@ virDomainHostdevMatchSubsys(virDomainHostdevDefPtr a,
>          else
>              return 0;
>      case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_MDEV:
> +        return virDomainHostdevMatchSubsysMediatedDev(a, b);

This points out that the practice of typecasting all values that are
being used for a switch() and removing the default: case isn't really
all that big of a help. Sure, it forces you to add new clauses to all
the relevant switches in the patch where you add the new enum value, but
it would just add in an *empty* clause thinking "I'll fill it in later",
then you're once again relegating the responsibility for adding the code
to your own memory, which is exactly what we were trying to avoid :-P

(Nothing wrong with what you're doing, I just felt like pontificating a
bit :-)


>      case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST:
>          return 0;
>      }
> 


ACK.




More information about the libvir-list mailing list