Re: [PATCH 6/6] hostdev: Emit debug messages while handling PCI hostdevs

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

 



On 12/17/2015 10:24 AM, Andrea Bolognani wrote:
Both detach and reattach are complex operations involving several steps,
and it can be useful to be able to follow along by reading the log.
---

ACK. Unfortunately it will all just get buried in the inane miles-long logs of converting PCI address strings into integers step by step. (there are some things that really should only be logged in a "super-debug-dev" mode. We don't need to fill up GB and GB (oh, sorry - GiB and GiB :-P) of space all over the world with debug logs that simply verify that our LongToStr function is still working. But that's not your problem...)

  src/util/virhostdev.c | 45 +++++++++++++++++++++++++++++++++++++++------
  1 file changed, 39 insertions(+), 6 deletions(-)

diff --git a/src/util/virhostdev.c b/src/util/virhostdev.c
index c8da8e5..f31ad41 100644
--- a/src/util/virhostdev.c
+++ b/src/util/virhostdev.c
@@ -596,11 +596,17 @@ virHostdevPreparePCIDevices(virHostdevManagerPtr hostdev_mgr,
      for (i = 0; i < virPCIDeviceListCount(pcidevs); i++) {
          virPCIDevicePtr dev = virPCIDeviceListGet(pcidevs, i);
- if (virPCIDeviceGetManaged(dev) &&
-            virPCIDeviceDetach(dev,
-                               hostdev_mgr->activePCIHostdevs,
-                               hostdev_mgr->inactivePCIHostdevs) < 0)
+        if (virPCIDeviceGetManaged(dev)) {
+            VIR_DEBUG("Detaching managed PCI device %s",
+                      virPCIDeviceGetName(dev));
+            if (virPCIDeviceDetach(dev,
+                                   hostdev_mgr->activePCIHostdevs,
+                                   hostdev_mgr->inactivePCIHostdevs) < 0)
                  goto reattachdevs;
+        } else {
+            VIR_DEBUG("Not detaching unmanaged PCI device %s",
+                      virPCIDeviceGetName(dev));
+        }
      }
/* At this point, all devices are attached to the stub driver and have
@@ -611,6 +617,7 @@ virHostdevPreparePCIDevices(virHostdevManagerPtr hostdev_mgr,
      for (i = 0; i < virPCIDeviceListCount(pcidevs); i++) {
          virPCIDevicePtr dev = virPCIDeviceListGet(pcidevs, i);
+ VIR_DEBUG("Resetting PCI device %s", virPCIDeviceGetName(dev));
          if (virPCIDeviceReset(dev, hostdev_mgr->activePCIHostdevs,
                                hostdev_mgr->inactivePCIHostdevs) < 0)
              goto reattachdevs;
@@ -632,14 +639,20 @@ virHostdevPreparePCIDevices(virHostdevManagerPtr hostdev_mgr,
      /* Loop 5: Now mark all the devices as active */
      for (i = 0; i < virPCIDeviceListCount(pcidevs); i++) {
          virPCIDevicePtr dev = virPCIDeviceListGet(pcidevs, i);
+
+        VIR_DEBUG("Adding PCI device %s to active list",
+                  virPCIDeviceGetName(dev));
          if (virPCIDeviceListAdd(hostdev_mgr->activePCIHostdevs, dev) < 0)
              goto inactivedevs;
      }
/* Loop 6: Now remove the devices from inactive list. */
      for (i = 0; i < virPCIDeviceListCount(pcidevs); i++) {
-         virPCIDevicePtr dev = virPCIDeviceListGet(pcidevs, i);
-         virPCIDeviceListDel(hostdev_mgr->inactivePCIHostdevs, dev);
+        virPCIDevicePtr dev = virPCIDeviceListGet(pcidevs, i);
+
+        VIR_DEBUG("Removing PCI device %s from inactive list",
+                  virPCIDeviceGetName(dev));
+        virPCIDeviceListDel(hostdev_mgr->inactivePCIHostdevs, dev);
      }
/* Loop 7: Now set the used_by_domain of the device in
@@ -651,6 +664,8 @@ virHostdevPreparePCIDevices(virHostdevManagerPtr hostdev_mgr,
          dev = virPCIDeviceListGet(pcidevs, i);
          activeDev = virPCIDeviceListFind(hostdev_mgr->activePCIHostdevs, dev);
+ VIR_DEBUG("Setting driver and domain information for PCI device %s",
+                  virPCIDeviceGetName(dev));
          if (activeDev)
              virPCIDeviceSetUsedBy(activeDev, drv_name, dom_name);
      }
@@ -674,6 +689,8 @@ virHostdevPreparePCIDevices(virHostdevManagerPtr hostdev_mgr,
           * "reprobe" were already set by pciDettachDevice in
           * loop 2.
           */
+        VIR_DEBUG("Saving network configuration of PCI device %s",
+                  virPCIDeviceGetName(dev));
          if ((pcidev = virPCIDeviceListFind(pcidevs, dev))) {
              hostdev->origstates.states.pci.unbind_from_stub =
                  virPCIDeviceGetUnbindFromStub(pcidev);
@@ -699,6 +716,9 @@ virHostdevPreparePCIDevices(virHostdevManagerPtr hostdev_mgr,
       */
      for (i = 0; i < virPCIDeviceListCount(pcidevs); i++) {
          virPCIDevicePtr dev = virPCIDeviceListGet(pcidevs, i);
+
+        VIR_DEBUG("Removing PCI device %s from active list",
+                  virPCIDeviceGetName(dev));
          virPCIDeviceListSteal(hostdev_mgr->activePCIHostdevs, dev);
      }
@@ -715,9 +735,14 @@ virHostdevPreparePCIDevices(virHostdevManagerPtr hostdev_mgr,
              /* NB: This doesn't actually re-bind to original driver, just
               * unbinds from the stub driver
               */
+            VIR_DEBUG("Reattaching managed PCI device %s",
+                      virPCIDeviceGetName(dev));
              ignore_value(virPCIDeviceReattach(dev,
                                                hostdev_mgr->activePCIHostdevs,
                                                hostdev_mgr->inactivePCIHostdevs));
+        } else {
+            VIR_DEBUG("Not reattaching unmanaged PCI device %s",
+                      virPCIDeviceGetName(dev));
          }
      }
@@ -739,6 +764,8 @@ virHostdevReattachPCIDevice(virPCIDevicePtr dev, virHostdevManagerPtr mgr)
       * successfully, it must have been inactive.
       */
      if (!virPCIDeviceGetManaged(dev)) {
+        VIR_DEBUG("Adding unmanaged PCI device %s to inactive list",
+                  virPCIDeviceGetName(dev));
          if (virPCIDeviceListAdd(mgr->inactivePCIHostdevs, dev) < 0)
              virPCIDeviceFree(dev);
          return;
@@ -754,6 +781,7 @@ virHostdevReattachPCIDevice(virPCIDevicePtr dev, virHostdevManagerPtr mgr)
          }
      }
+ VIR_DEBUG("Reattaching PCI device %s", virPCIDeviceGetName(dev));
      if (virPCIDeviceReattach(dev, mgr->activePCIHostdevs,
                               mgr->inactivePCIHostdevs) < 0) {
          virErrorPtr err = virGetLastError();
@@ -821,6 +849,8 @@ virHostdevReAttachPCIDevices(virHostdevManagerPtr hostdev_mgr,
                  }
          }
+ VIR_DEBUG("Removing PCI device %s from active list",
+                  virPCIDeviceGetName(dev));
          virPCIDeviceListDel(hostdev_mgr->activePCIHostdevs, dev);
          i++;
      }
@@ -843,6 +873,8 @@ virHostdevReAttachPCIDevices(virHostdevManagerPtr hostdev_mgr,
                                    pcisrc->addr.slot, pcisrc->addr.function);
              if (dev) {
                  if (virPCIDeviceListFind(pcidevs, dev)) {
+                    VIR_DEBUG("Restoring network configuration of PCI device %s",
+                              virPCIDeviceGetName(dev));
                      virHostdevNetConfigRestore(hostdev, hostdev_mgr->stateDir,
                                                 oldStateDir);
                  }
@@ -855,6 +887,7 @@ virHostdevReAttachPCIDevices(virHostdevManagerPtr hostdev_mgr,
      for (i = 0; i < virPCIDeviceListCount(pcidevs); i++) {
          virPCIDevicePtr dev = virPCIDeviceListGet(pcidevs, i);
+ VIR_DEBUG("Resetting PCI device %s", virPCIDeviceGetName(dev));
          if (virPCIDeviceReset(dev, hostdev_mgr->activePCIHostdevs,
                                hostdev_mgr->inactivePCIHostdevs) < 0) {
              virErrorPtr err = virGetLastError();

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list



[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]