[libvirt] [PATCH 17/34] Introduce device aliases

Daniel Veillard veillard at redhat.com
Fri Jan 15 16:22:56 UTC 2010


On Fri, Jan 08, 2010 at 05:23:13PM +0000, Daniel P. Berrange wrote:
> This patch introduces the support for giving all devices a short,
> unique name, henceforth known as a 'device alias'.  These aliases
> are not set by the end user, instead being assigned by the hypervisor
> if it decides it want to support this concept.
> 
> The QEMU driver sets them whenever using the -device arg syntax
> and uses them for improved hotplug/hotunplug. it is the intent
> that other APIs (block / interface stats & device hotplug) be
> able to accept device alias names in the future.
> 
> The XML syntax is
> 
>    <alias name="video0"/>
> 
> This may appear in any type of device that supports device info.
[...]
> -static void virDomainDeviceInfoClearField(virDomainDeviceInfoPtr info)
> +static void virDomainDeviceInfoClearField(virDomainDeviceInfoPtr info, int alias, int pciaddr)
>  {
> -    if (info->type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI) {
> +    if (alias)
> +        VIR_FREE(info->alias);
> +    if (pciaddr &&
> +        info->type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI) {
>          memset(&info->addr, 0, sizeof(info->addr));
>          info->type = VIR_DOMAIN_DEVICE_ADDRESS_TYPE_NONE;
>      }
>  }

  okay, now this routine really makes sense :-)

[...]
> diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
> index a6f7ab2..87fbba7 100644
> --- a/src/conf/domain_conf.h
> +++ b/src/conf/domain_conf.h
> @@ -92,6 +92,7 @@ struct _virDomainDeviceDriveAddress {
>  typedef struct _virDomainDeviceInfo virDomainDeviceInfo;
>  typedef virDomainDeviceInfo *virDomainDeviceInfoPtr;
>  struct _virDomainDeviceInfo {
> +    char *alias;
>      int type;
>      union {
>          virDomainDevicePCIAddress pci;
> @@ -246,8 +247,6 @@ struct _virDomainNetDef {
>      char *ifname;
>      virDomainDeviceInfo info;
>      /* XXX figure out how to remove this */
> -    char *nic_name;
> -    /* XXX figure out how to remove this */
>      char *hostnet_name;
>      /* XXX figure out how to remove this */
>      int vlan;

  and that gives a clear example of use, okay


  ACK,

Daniel

-- 
Daniel Veillard      | libxml Gnome XML XSLT toolkit  http://xmlsoft.org/
daniel at veillard.com  | Rpmfind RPM search engine http://rpmfind.net/
http://veillard.com/ | virtualization library  http://libvirt.org/




More information about the libvir-list mailing list