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

Laine Stump laine at laine.org
Fri Dec 18 16:17:01 UTC 2015


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();




More information about the libvir-list mailing list