Files
nova/releasenotes/notes/bug-2098496-move-pci-hostdevs-than-requested-0139018213f1be96.yaml
Balazs Gibizer 229fb3513a Ignore metadata tags in pci/stats _find_pool logic
The stats module uses the _find_pool() call to find a matching pool for
a new device or a device that is being deallocated. If no existing pool
matches with the dev then then a new pool is created for it. The
pool matching logic was faulty as it did not remove all the metadata
keys from the pool like rp_uuid. So if the dev did not have that key but
the pool did then the dev did not match.

On the other hand the PCI allocation logic (when PCI in Placement is
enabled) assumed that devices from a single rp_uuid are always in a
single pool. As this assumption was broken by the above bug the PCI
allocation blindly tried to allocate resources for an rp_uuid from each
matching pool causing overallocation.

The main fix in this patch is to ignore the metadata tags in
_find_pool(). But also two safety net are added to the allocation logic.
The logic now asserts that the assumption is correct and if not (i.e. it
found multiple pools with the same rp_uuid) then it bails out. It also
does not ever blindly allocate the same rp_uuid request from multiple
pools.

Closes-Bug: #2098496
Change-Id: I9678230397fa1a3c735ee01ed756d5af3b4e1191
2025-03-19 18:25:59 +01:00

13 lines
608 B
YAML

---
fixes:
- |
Fixed the issue
`bug 2098496 <https://bugs.launchpad.net/nova/+bug/2098496>`__ where nova
assigned more PCI hostdevs to a VM than the flavor requested via the
pci_passthrough:alias extra_spec. This only affected systems where both
``[filter_scheduler]pci_in_placement`` and ``[pci]report_in_placement``
were set to True. This only affected systems where the PCI alias requested
type-VF devices and a single PF device on the compute node supported more
than one VFs and ``[pci]device_spec`` configuration allowed nova to use
multiple VFs from a single PF.