[libvirt] [PATCH 04/13] qemu: restructure qemuAssignDeviceControllerAlias

John Ferlan jferlan at redhat.com
Fri May 8 16:51:26 UTC 2015



On 05/05/2015 02:03 PM, Laine Stump wrote:
> No functional change, just rearrange this function and pass in full
> domain definition to make it simpler to add exceptions.
> ---
>  src/qemu/qemu_command.c | 32 ++++++++++++++++++++++----------
>  src/qemu/qemu_command.h |  2 +-
>  src/qemu/qemu_hotplug.c |  4 ++--
>  3 files changed, 25 insertions(+), 13 deletions(-)
> 
> diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
> index b76bd98..340478c 100644
> --- a/src/qemu/qemu_command.c
> +++ b/src/qemu/qemu_command.c
> @@ -1031,22 +1031,34 @@ qemuAssignDeviceRedirdevAlias(virDomainDefPtr def, virDomainRedirdevDefPtr redir
>  
>  
>  int
> -qemuAssignDeviceControllerAlias(virDomainControllerDefPtr controller)
> +qemuAssignDeviceControllerAlias(ATTRIBUTE_UNUSED virDomainDefPtr def,

?? Not using it now or in this series to add exceptions, so is there
really a need for it?

> +                                virDomainControllerDefPtr controller)
>  {
> -    const char *prefix = virDomainControllerTypeToString(controller->type);
> +    int ret = 0;
> +
> +    VIR_FREE(controller->info.alias);
>  
> -    if (controller->type == VIR_DOMAIN_CONTROLLER_TYPE_PCI) {
> -        /* only pcie-root uses a different naming convention
> -         * ("pcie.0"), because it is hardcoded that way in qemu. All
> -         * other buses use the consistent "pci.%u".
> +    switch (controller->type) {

Similar to 3/13

s/(/((virDomainControllerType)/

> +    case VIR_DOMAIN_CONTROLLER_TYPE_PCI:
> +        /* pcie-root uses a different naming convention ("pcie.0"),
> +         * because it is hardcoded that way in qemu. All other PCI
> +         * buses use the consistent "pci.%u".
>           */
>          if (controller->model == VIR_DOMAIN_CONTROLLER_MODEL_PCIE_ROOT)
> -            return virAsprintf(&controller->info.alias, "pcie.%d", controller->idx);
> +            ret = virAsprintf(&controller->info.alias, "pcie.%d", controller->idx);
>          else
> -            return virAsprintf(&controller->info.alias, "pci.%d", controller->idx);
> +            ret = virAsprintf(&controller->info.alias, "pci.%d", controller->idx);
> +        break;
> +    default:

Change default to:

    case VIR_DOMAIN_CONTROLLER_TYPE_IDE:
    case VIR_DOMAIN_CONTROLLER_TYPE_FDC:
    case VIR_DOMAIN_CONTROLLER_TYPE_SCSI:
    case VIR_DOMAIN_CONTROLLER_TYPE_SATA:
    case VIR_DOMAIN_CONTROLLER_TYPE_VIRTIO_SERIAL:
    case VIR_DOMAIN_CONTROLLER_TYPE_CCID:
    case VIR_DOMAIN_CONTROLLER_TYPE_USB:
        ret = virAsprintf(&controller->info.alias, "%s%d",
                          virDomainControllerTypeToString(controller->type),
                          controller->idx);
        break;

    case VIR_DOMAIN_CONTROLLER_TYPE_LAST:
        Some sort of virReportError...
        ret = -1;
> +        break;
>      }
>  
> -    return virAsprintf(&controller->info.alias, "%s%d", prefix, controller->idx);
> +    /* catchall for anything that wasn't an exception */
> +    if (ret == 0 && !controller->info.alias)
> +        ret = virAsprintf(&controller->info.alias, "%s%d",
> +                          virDomainControllerTypeToString(controller->type),
> +                          controller->idx);

Thus removing the need for this ^^^^

ACK w/ adjustments... Although I'm still unsure why we want to pass
the whole domain def...

John

> +    return ret;
>  }
>  
>  static ssize_t
> @@ -1174,7 +1186,7 @@ qemuAssignDeviceAliases(virDomainDefPtr def, virQEMUCapsPtr qemuCaps)
>              return -1;
>      }
>      for (i = 0; i < def->ncontrollers; i++) {
> -        if (qemuAssignDeviceControllerAlias(def->controllers[i]) < 0)
> +        if (qemuAssignDeviceControllerAlias(def, def->controllers[i]) < 0)
>              return -1;
>      }
>      for (i = 0; i < def->ninputs; i++) {
> diff --git a/src/qemu/qemu_command.h b/src/qemu/qemu_command.h
> index 675eb62..d066953 100644
> --- a/src/qemu/qemu_command.h
> +++ b/src/qemu/qemu_command.h
> @@ -287,7 +287,7 @@ int qemuAssignDeviceDiskAlias(virDomainDefPtr vmdef,
>                                virDomainDiskDefPtr def,
>                                virQEMUCapsPtr qemuCaps);
>  int qemuAssignDeviceHostdevAlias(virDomainDefPtr def, virDomainHostdevDefPtr hostdev, int idx);
> -int qemuAssignDeviceControllerAlias(virDomainControllerDefPtr controller);
> +int qemuAssignDeviceControllerAlias(virDomainDefPtr def, virDomainControllerDefPtr controller);
>  int qemuAssignDeviceRedirdevAlias(virDomainDefPtr def, virDomainRedirdevDefPtr redirdev, int idx);
>  int qemuAssignDeviceChrAlias(virDomainDefPtr def,
>                               virDomainChrDefPtr chr,
> diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c
> index 613b728..24a5f51 100644
> --- a/src/qemu/qemu_hotplug.c
> +++ b/src/qemu/qemu_hotplug.c
> @@ -465,7 +465,7 @@ int qemuDomainAttachControllerDevice(virQEMUDriverPtr driver,
>                  goto cleanup;
>          }
>          releaseaddr = true;
> -        if (qemuAssignDeviceControllerAlias(controller) < 0)
> +        if (qemuAssignDeviceControllerAlias(vm->def, controller) < 0)
>              goto cleanup;
>  
>          if (controller->type == VIR_DOMAIN_CONTROLLER_TYPE_USB &&
> @@ -3631,7 +3631,7 @@ int qemuDomainDetachControllerDevice(virQEMUDriverPtr driver,
>  
>      if (virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_DEVICE) &&
>          !detach->info.alias) {
> -        if (qemuAssignDeviceControllerAlias(detach) < 0)
> +        if (qemuAssignDeviceControllerAlias(vm->def, detach) < 0)
>              goto cleanup;
>      }
>  
> 




More information about the libvir-list mailing list