f37cdf0c4182103ad81dbf39188ff39955da3850
The PCI tracker handles the case when a device spec is removed from the configuration while a device is still being allocated. It keeps the device until the VM is deleted to avoid inconsistencies. However the full removal of such a device needs not just the VM deletion, but also a nova-compute restart. The device tracker just frees the device during VM deletion but does not removed them until the next nova-compute startup. This allows the device to be re-allocated by another VM even though the device is not allowed by a device_spec. This change adds yet another in memory dict to the pci tracker to track these devices that are only kept until they are freed. Then during free() this list is consulted and if the device is in the list then the device is marked for removal as well. This kills two birds with one stone: * We prevent the re-allocation of the device as the state of the device will be set to REMOVED not AVAILABLE during VM deletion. * As PCI in Placement relies on the state of the device to decide what to track in placement, this change makes sure that a device that needs to be removed, is now removed from placement too. Note that we have another bug that prevents this removal for now. But at least the reproducers of that bug now starts to behave the same regardless of how many device belongs to the same RP in placement. Related-Bug: #2115905 Change-Id: I63c8fb2669a3c6b3adb77d210c0f9b39d3657c80 Signed-off-by: Balazs Gibizer <gibi@redhat.com>
…
…
============== OpenStack Nova ============== OpenStack Nova provides a cloud computing fabric controller, supporting a wide variety of compute technologies, including: libvirt (KVM, Xen, LXC and more), VMware and OpenStack Ironic. Use the following resources to learn more. API --- To learn how to use Nova's API, consult the documentation available online at: - `Compute API Guide <https://docs.openstack.org/api-guide/compute/>`__ - `Compute API Reference <https://docs.openstack.org/api-ref/compute/>`__ For more information on OpenStack APIs, SDKs and CLIs in general, refer to: - `OpenStack for App Developers <https://www.openstack.org/appdev/>`__ - `Development resources for OpenStack clouds <https://developer.openstack.org/>`__ Operators --------- To learn how to deploy and configure OpenStack Nova, consult the documentation available online at: - `OpenStack Nova <https://docs.openstack.org/nova/>`__ In the unfortunate event that bugs are discovered, they should be reported to the appropriate bug tracker. If you obtained the software from a 3rd party operating system vendor, it is often wise to use their own bug tracker for reporting problems. In all other cases use the master OpenStack bug tracker, available at: - `Bug Tracker <https://bugs.launchpad.net/nova>`__ Developers ---------- For information on how to contribute to Nova, please see the contents of the CONTRIBUTING.rst. Any new code must follow the development guidelines detailed in the HACKING.rst file, and pass all unit tests. To understand better the processes that the team is using, please refer to the `Process document <https://docs.openstack.org/nova/latest/contributor/process.html>`__. Further developer focused documentation is available at: - `Official Nova Documentation <https://docs.openstack.org/nova/>`__ - `Official Client Documentation <https://docs.openstack.org/python-novaclient/>`__ Other Information ----------------- During each `Summit`_ and `Project Team Gathering`_, we agree on what the whole community wants to focus on for the upcoming release. The plans for nova can be found at: - `Nova Specs <http://specs.openstack.org/openstack/nova-specs/>`__ .. _Summit: https://www.openstack.org/summit/ .. _Project Team Gathering: https://www.openstack.org/ptg/
Description
Languages
Python
97.5%
Smarty
2.3%
Shell
0.2%