[libvirt] [PATCH] libxl: Fix devid init in libxlMakeNicList

Stefan Bader stefan.bader at canonical.com
Wed Jan 8 10:39:19 UTC 2014

This basically reverts commit ba64b97134a6129a48684f22f31be92c3b6eef96
"libxl: Allow libxl to set NIC devid". However assigning devid's
before calling libxlMakeNic does not work as that is calling
libxl_device_nic_init which sets it back to -1.
Right now auto-assignment only works in the hotplug case. But even if
that would be fixed at some point (if that is possible at all), this
would add a weird dependency between Xen and libvirt versions.
The change here should accept any auto-assignment that makes it into
libxl_device_nic_init. My understanding is that a caller always is
allowed to make the devid choice itself. And assuming libxlMakeNicList
is only used on domain creation, a sequential numbering should be ok.

Signed-off-by: Stefan Bader <stefan.bader at canonical.com>
 src/libxl/libxl_conf.c |    7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/src/libxl/libxl_conf.c b/src/libxl/libxl_conf.c
index 04d01af..4cefadf 100644
--- a/src/libxl/libxl_conf.c
+++ b/src/libxl/libxl_conf.c
@@ -918,6 +918,13 @@ libxlMakeNicList(virDomainDefPtr def,  libxl_domain_config *d_config)
     for (i = 0; i < nnics; i++) {
         if (libxlMakeNic(def, l_nics[i], &x_nics[i]))
             goto error;
+        /*
+         * The devid (at least right now) will not get initialized by
+         * libxl in the setup case but is required for starting the
+         * device-model.
+         */
+        if (x_nics[i].devid < 0)
+            x_nics[i].devid = i;
     d_config->nics = x_nics;

More information about the libvir-list mailing list