]> xenbits.xensource.com Git - libvirt.git/commitdiff
util: save hostdev network device config before unbinding from host driver
authorLaine Stump <laine@laine.org>
Tue, 28 Feb 2017 21:44:26 +0000 (16:44 -0500)
committerLaine Stump <laine@laine.org>
Mon, 27 Mar 2017 14:19:24 +0000 (10:19 -0400)
In order to properly restore the original state of an SRIOV VF when
we're finished with it, we need to save the MAC address of the VF
itself (not just the admin MAC address for the VF that is stored in
the PF). But that can only be done when the VF is still bound to the
host's netdev driver, and we have always done the saving of device
config after the VF is already bound to vfio-pci. This patch prepares
us for adding a save of the VF's MAC by calling the function that
saves netconfig earlier in the device preparation, before we've
unbound it from the host netdev driver.

src/util/virhostdev.c

index 6f3946bf0c5cb8ac11b8daa6d3eef596f54a3a94..cb955b47a30a940746bb18e2276951a431b884ee 100644 (file)
@@ -653,6 +653,14 @@ virHostdevPreparePCIDevices(virHostdevManagerPtr mgr,
         }
     }
 
+    /* Step 1.5: For non-802.11Qbh SRIOV network devices, save the
+     * current device config
+     */
+    for (i = 0; i < nhostdevs; i++) {
+        if (virHostdevSaveNetConfig(hostdevs[i], mgr->stateDir) < 0)
+            goto cleanup;
+    }
+
     /* Step 2: detach managed devices and make sure unmanaged devices
      *         have already been taken care of */
     for (i = 0; i < virPCIDeviceListCount(pcidevs); i++) {
@@ -743,9 +751,6 @@ virHostdevPreparePCIDevices(virHostdevManagerPtr mgr,
      * the network device, set the new netdev config */
     for (i = 0; i < nhostdevs; i++) {
 
-        if (virHostdevSaveNetConfig(hostdevs[i], mgr->stateDir) < 0)
-            goto resetvfnetconfig;
-
         if (virHostdevSetNetConfig(hostdevs[i], uuid) < 0)
             goto resetvfnetconfig;