]> xenbits.xensource.com Git - libvirt.git/commitdiff
libxl: Fix devid init in libxlMakeNicList
authorStefan Bader <stefan.bader@canonical.com>
Wed, 8 Jan 2014 10:39:19 +0000 (11:39 +0100)
committerJim Fehlig <jfehlig@suse.com>
Thu, 9 Jan 2014 02:07:01 +0000 (19:07 -0700)
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@canonical.com>
src/libxl/libxl_conf.c

index 04d01afb02a5f114101b287e202336287543c568..4cefadf37f058be22102aefa712074c174f26542 100644 (file)
@@ -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;