00f1d4757e
There are a few things we need to do to make that work: * Always set the PCIRequest's requester_id. Previously, this was only done for resource requests. The requester_id is the port UUID, so we can use that to correlate which port to update with which pci_slot (in the case of multiple SRIOV ports per instance). This has the side effect of making the fix work only for instances created *after* this patch has been applied. It's not ideal, but there does not appear to be a better way. * Call setup_networks_on_host() within the instance_claim context. This means the instance's pci_devices are updated when we call it, allowing us to get the pci_slot information from them. With the two previous changes in place, we can figure out the port's new pci_slot in _update_port_binding_for_instance(). Closes: bug 1851545 Change-Id: Icfa8c1d6e84eab758af6223a2870078685584aaa
13 lines
524 B
YAML
13 lines
524 B
YAML
---
|
|
fixes:
|
|
- |
|
|
`Bug 1851545 <https://bugs.launchpad.net/nova/+bug/1851545>`_, wherein
|
|
unshelving an instance with SRIOV Neutron ports did not update the port
|
|
binding's ``pci_slot`` and could cause libvirt PCI conflicts, has been
|
|
fixed.
|
|
|
|
.. important:: Constraints in the fix's implementation mean that it only
|
|
applies to instances booted **after** it has been applied. Existing
|
|
instances will still experience bug 1851545 after being shelved and
|
|
unshelved, even with the fix applied.
|