[libvirt] [PATCH] Fix network hotplug to use device_add in QEMU

Daniel Veillard veillard at redhat.com
Fri Apr 16 11:36:04 UTC 2010


On Fri, Apr 16, 2010 at 11:53:52AM +0100, Daniel P. Berrange wrote:
> The initial boot of VMs uses -device for NICs where available. The
> corresponding monitor command is device_add, but the network hotplug
> code was still using device_del by mistake.

  Err it looks to me that the code is still using the old PCI add
instead of device_add but not device_del or I'm mistaken.

> * src/qemu/qemu_driver.c: Use device_add for NIC hotplug where
>   available
> ---
>  src/qemu/qemu_driver.c |   28 ++++++++++++++++++++--------
>  1 files changed, 20 insertions(+), 8 deletions(-)
> 
> diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
> index 5c15c1d..9e0a353 100644
> --- a/src/qemu/qemu_driver.c
> +++ b/src/qemu/qemu_driver.c
> @@ -7210,17 +7210,29 @@ static int qemudDomainAttachNetDevice(virConnectPtr conn,
>          close(tapfd);
>      tapfd = -1;
>  
> -    if (!(nicstr = qemuBuildNicStr(net, NULL, vlan)))
> -        goto try_remove;
> +    if (qemuCmdFlags & QEMUD_CMD_FLAG_DEVICE) {
> +        if (!(nicstr = qemuBuildNicDevStr(net, vlan)))
> +            goto try_remove;
> +    } else {
> +        if (!(nicstr = qemuBuildNicStr(net, NULL, vlan)))
> +            goto try_remove;
> +    }
>  
>      qemuDomainObjEnterMonitorWithDriver(driver, vm);
> -    if (qemuMonitorAddPCINetwork(priv->mon, nicstr,
> -                                 &guestAddr) < 0) {
> -        qemuDomainObjExitMonitorWithDriver(driver, vm);
> -        goto try_remove;
> +    if (qemuCmdFlags & QEMUD_CMD_FLAG_DEVICE) {
> +        if (qemuMonitorAddDevice(priv->mon, nicstr) < 0) {
> +            qemuDomainObjExitMonitorWithDriver(driver, vm);
> +            goto try_remove;
> +        }
> +    } else {
> +        if (qemuMonitorAddPCINetwork(priv->mon, nicstr,
> +                                     &guestAddr) < 0) {
> +            qemuDomainObjExitMonitorWithDriver(driver, vm);
> +            goto try_remove;
> +        }
> +        net->info.type = VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI;
> +        memcpy(&net->info.addr.pci, &guestAddr, sizeof(guestAddr));
>      }
> -    net->info.type = VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI;
> -    memcpy(&net->info.addr.pci, &guestAddr, sizeof(guestAddr));
>      qemuDomainObjExitMonitorWithDriver(driver, vm);
>  
>      ret = 0;

  But patch looks fine to me !

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