[libvirt] [PATCH 22/24] hostdev: Streamline device ownership tracking

John Ferlan jferlan at redhat.com
Wed Mar 16 19:33:44 UTC 2016


[...]

>>> -    /* Step 5: Now mark all the devices as active */
>>> +    /* Step 5: Move devices from the inactive list to the active list */
>>>       for (i = 0; i < virPCIDeviceListCount(pcidevs); i++) {
>>>           virPCIDevicePtr pci = virPCIDeviceListGet(pcidevs, i);
>>> +        virPCIDevicePtr actual;
>>>   
>>> -        VIR_DEBUG("Adding PCI device %s to active list",
>>> +        VIR_DEBUG("Removing PCI device %s from inactive list",
>>>                     virPCIDeviceGetName(pci));
>>> -        if (virPCIDeviceListAdd(mgr->activePCIHostdevs, pci) < 0)
>>> -            goto inactivedevs;
>>> -    }
>>> -
>>> -    /* Step 6: Now remove the devices from inactive list. */
>>> -    for (i = 0; i < virPCIDeviceListCount(pcidevs); i++) {
>>> -        virPCIDevicePtr pci = virPCIDeviceListGet(pcidevs, i);
>>> +        actual = virPCIDeviceListSteal(mgr->inactivePCIHostdevs, pci);
>>>   
>>> -        VIR_DEBUG("Removing PCI device %s from inactive list",
>>> +        VIR_DEBUG("Adding PCI device %s to active list",
>>>                     virPCIDeviceGetName(pci));
>>> -        virPCIDeviceListDel(mgr->inactivePCIHostdevs, pci);
>>> +        if (!actual || virPCIDeviceListAdd(mgr->activePCIHostdevs, actual) < 0)
>>> +            goto inactivedevs;
>>>       }
>>  
>> This is so much more logical to me than the previous code.
> 
> Yay :)
> 

While writing the tomb for patch 20, I had one question/issue... You
could have already addressed in your upcoming patches, but I'll ask
anyway before I see them....

Essentially combining step5/step6 will *steal* from the inactiveList
(the rich) and give to the activeList (the poor). That's not a problem.

But, doesn't this mean only managed devices are moved to activeList as
opposed to all possible hostdevs (in pcidevs) - at least during Prepare?
 Again it's this whole how does the inactiveList get populated conundrum
(vis-a-vis devices in the guest XML that are not managed).

Assuming the Reattach code will no longer place unmanaged devices on the
inactiveList the point/question is probably moot!

John




More information about the libvir-list mailing list