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

[Xen-changelog] [xen-unstable] libxl: fix vif.ifname when used with stub device model.


  • To: xen-changelog@xxxxxxxxxxxxxxxxxxx
  • From: Xen patchbot-unstable <patchbot@xxxxxxx>
  • Date: Tue, 24 Jul 2012 17:22:08 +0000
  • Delivery-date: Tue, 24 Jul 2012 17:22:22 +0000
  • List-id: "Change log for Mercurial \(receive only\)" <xen-changelog.lists.xen.org>

# HG changeset patch
# User Ian Campbell <ian.campbell@xxxxxxxxxx>
# Date 1343122157 -3600
# Node ID cea026d5a378eca5c4fc3885bf9a462175bc43fe
# Parent  ce24b84f6af85fd606233100cc313be611b615c8
libxl: fix vif.ifname when used with stub device model.

Currently the same libxl_device_nic is used to create both the HVM domain and
its stub domain's NICs. This means that if a vifname is provided both the HVM
domains PV NIC and the stub domains PV NIC will get the same name and the
DM's NIC will fail to be attached.

Instead launder the libxl_device_nic to add the TAP_DEVICE_SUFFIX ("-emu").
This is a bit of a misnomer, since the device is actually PV, but it is used to
"back" the emulated device in the stub domain and this naming scheme is
consistent with the non-stub case and is known to work e.g. with our hotplug
scripts.

Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx>
Acked-by: Ian Jackson <ian.jackson@xxxxxxxxxxxxx>
Committed-by: Ian Campbell <ian.campbell@xxxxxxxxxx>
---


diff -r ce24b84f6af8 -r cea026d5a378 tools/libxl/libxl_dm.c
--- a/tools/libxl/libxl_dm.c    Tue Jul 24 09:35:44 2012 +0100
+++ b/tools/libxl/libxl_dm.c    Tue Jul 24 10:29:17 2012 +0100
@@ -616,6 +616,24 @@ static char ** libxl__build_device_model
     }
 }
 
+static void libxl__dm_vifs_from_hvm_guest_config(libxl__gc *gc,
+                                    libxl_domain_config * const guest_config,
+                                    libxl_domain_config *dm_config)
+{
+    int i, nr = guest_config->num_vifs;
+
+    GCNEW_ARRAY(dm_config->vifs, nr);
+
+    for (i=0; i<nr; i++) {
+        dm_config->vifs[i] = guest_config->vifs[i];
+        if (dm_config->vifs[i].ifname)
+            dm_config->vifs[i].ifname = GCSPRINTF("%s" TAP_DEVICE_SUFFIX,
+                                                  dm_config->vifs[i].ifname);
+    }
+
+    dm_config->num_vifs = nr;
+}
+
 static int libxl__vfb_and_vkb_from_hvm_guest_config(libxl__gc *gc,
                                         const libxl_domain_config 
*guest_config,
                                         libxl_device_vfb *vfb,
@@ -758,8 +776,7 @@ void libxl__spawn_stub_dm(libxl__egc *eg
     dm_config->disks = guest_config->disks;
     dm_config->num_disks = guest_config->num_disks;
 
-    dm_config->vifs = guest_config->vifs;
-    dm_config->num_vifs = guest_config->num_vifs;
+    libxl__dm_vifs_from_hvm_guest_config(gc, guest_config, dm_config);
 
     ret = libxl__domain_create_info_setdefault(gc, &dm_config->c_info);
     if (ret) goto out;

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.