[libvirt] [PATCH] libvirt: xen: do not use ioemu type for any emulated NIC
Cole Robinson
crobinso at redhat.com
Thu Apr 12 21:57:10 UTC 2012
On 04/12/2012 09:42 AM, Stefan Bader wrote:
> This is a re-send as there was some positive feedback but the
> patch itself made it into the repo.
>
> -Stefan
>
>>From a3198c5c1ae8908818f6c0f0df4237dbe5ddeec7 Mon Sep 17 00:00:00 2001
> From: Stefan Bader <stefan.bader at canonical.com>
> Date: Thu, 12 Apr 2012 15:32:41 +0200
> Subject: [PATCH] libvirt: xen: do not use ioemu type for any emulated NIC
>
> When using the xm/xend stack to manage instances there is a bug
> that causes the emulated interfaces to be unusable when the vif
> config contains type=ioemu (MAC address all zero).
>
> The current code already has a special quirk to not use this
> keyword if no specific model is given for the emulated NIC
> (defaulting to rtl8139).
> Essentially it works because regardless of the type argument,
> the Xen stack always creates emulated and paravirt interfaces and
> lets the guest decide which one to use. So neither xl nor xm stack
> actually require the type keyword for emulated NICs.
>
> Signed-off-by: Stefan Bader <stefan.bader at canonical.com>
> ---
> src/xenxs/xen_sxpr.c | 4 +++-
> src/xenxs/xen_xm.c | 4 +++-
> 2 files changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/src/xenxs/xen_sxpr.c b/src/xenxs/xen_sxpr.c
> index e1bbd76..71602fa 100644
> --- a/src/xenxs/xen_sxpr.c
> +++ b/src/xenxs/xen_sxpr.c
> @@ -2012,7 +2012,9 @@ xenFormatSxprNet(virConnectPtr conn,
> }
> else {
> virBufferEscapeSexpr(buf, "(model '%s')", def->model);
> - virBufferAddLit(buf, "(type ioemu)");
> + /* See above. Also needed when model is specified. */
> + if (xendConfigVersion <= XEND_CONFIG_MAX_VERS_NET_TYPE_IOEMU)
> + virBufferAddLit(buf, "(type ioemu)");
> }
>
I think it would be better if we just centralized this logic, as in, only set
that (type ioemu) bit in conditional rather than 2. Should be pretty
straightforward.
> if (!isAttach)
> diff --git a/src/xenxs/xen_xm.c b/src/xenxs/xen_xm.c
> index d65e97a..e072599 100644
> --- a/src/xenxs/xen_xm.c
> +++ b/src/xenxs/xen_xm.c
> @@ -1394,7 +1394,9 @@ static int xenFormatXMNet(virConnectPtr conn,
> }
> else {
> virBufferAsprintf(&buf, ",model=%s", net->model);
> - virBufferAddLit(&buf, ",type=ioemu");
> + /* See above. Also needed if model is specified. */
> + if (xendConfigVersion <= XEND_CONFIG_MAX_VERS_NET_TYPE_IOEMU)
> + virBufferAddLit(&buf, ",type=ioemu");
> }
>
> if (net->ifname)
Same here as well.
Thanks,
Cole
More information about the libvir-list
mailing list