qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] Re: [PATCH v2] net: Fix hotplug with pci_add


From: Michael S. Tsirkin
Subject: [Qemu-devel] Re: [PATCH v2] net: Fix hotplug with pci_add
Date: Wed, 9 Jun 2010 12:58:20 +0300
User-agent: Mutt/1.5.19 (2009-01-05)

On Tue, Jun 08, 2010 at 09:13:58PM +0530, Amit Shah wrote:
> The correct model type wasn't getting added when hotplugging nics with
> pci_add.
> 
> Testcase: start VM with default nic type. In the qemu_monitor:
> 
> (qemu) pci_add auto nic model=virtio
> 
> This results in a nic hot-plug of the same nic type as the default.
> 
> This was broken in 5294e2c774f120e10b44652ac143abda356f44eb
> 
> Also changes the behaviour where no .init is defined for a
> net_client_type. Previously, 0 was returned, which indicated the init
> was successful and that 0 was the index into the nd_tables[] array.
> Return -1, indicating unsuccessful init, in such a case.
> 
> Signed-off-by: Amit Shah <address@hidden>

Acked-by: Michael S. Tsirkin <address@hidden>

I'll pick this up if no one beats me to it.

> ---
> Sorry, v1 was a stale patch.
> 
> v2:
>  - Init 'ret' to -1, fixes compile err and added note in the commit msg
>    explaining this.
> 
>  net.c |    7 +++++--
>  1 files changed, 5 insertions(+), 2 deletions(-)
> 
> diff --git a/net.c b/net.c
> index efa8b3d..4cb93ed 100644
> --- a/net.c
> +++ b/net.c
> @@ -1106,6 +1106,7 @@ int net_client_init(Monitor *mon, QemuOpts *opts, int 
> is_netdev)
>      for (i = 0; net_client_types[i].type != NULL; i++) {
>          if (!strcmp(net_client_types[i].type, type)) {
>              VLANState *vlan = NULL;
> +            int ret;
>  
>              if (qemu_opts_validate(opts, &net_client_types[i].desc[0]) == 
> -1) {
>                  return -1;
> @@ -1118,14 +1119,16 @@ int net_client_init(Monitor *mon, QemuOpts *opts, int 
> is_netdev)
>                  vlan = qemu_find_vlan(qemu_opt_get_number(opts, "vlan", 0), 
> 1);
>              }
>  
> +            ret = -1;
>              if (net_client_types[i].init) {
> -                if (net_client_types[i].init(opts, mon, name, vlan) < 0) {
> +                ret = net_client_types[i].init(opts, mon, name, vlan);
> +                if (ret < 0) {
>                      /* TODO push error reporting into init() methods */
>                      qerror_report(QERR_DEVICE_INIT_FAILED, type);
>                      return -1;
>                  }
>              }
> -            return 0;
> +            return ret;
>          }
>      }
>  
> -- 
> 1.7.0.1
> 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]