The 7.0.0 release of both libvirt and libvirt-python is tagged and signed tarballs and source RPMs are available at https://libvirt.org/sources/ https://libvirt.org/sources/python/ Thanks everybody who helped with this release by sending patches, reviewing, testing, or providing any other feedback. Your work is greatly appreciated. * Project governance * Formal handover of release tarball signing Starting from libvirt-6.6 the release tarballs are signed by Jiří Denemark. Releases starting with 7.0 contain a note from the previous maintainer Daniel Veillard offically handing over the signing of packages so that the transition can be verified. * New features * nodedev: Add node device driver support for AP devices Add support for detecting and listing Adjunct Processor(AP) cards, AP queues and AP matrix devices (which are capable of MDEV) of a KVM host system in libvirt node device driver with correct object relationships. * qemu: Allow control of ``qcow2`` metadata cache In specific usecases such as when massive storage images are used it's possible to achieve better performance by increasing the metadata cache size. The new knob allows advanced users setting the size according to qemu's documentation to suit their image. * conf: Add support for keeping TPM emulator state Currently, swtpm TPM state file is removed when a transient domain is powered off or undefined. Add per-TPM emulator option ``persistent_state`` for keeping TPM state. * Improvements * qemu: Discourage users from polling ``virDomainGetBlockJobInfo`` for block job completion Document that waiting for events is a more robust solution. * secret: Relax XML schema for the ``usage`` name of a ``secret`` Various bits of documentation of how to use libvirt with RBD volumes used an usage name which would not pass the XML validation. Relax the requirement to make such XMLs valid. * virnetdevopenvswitch: Various improvements The code that handles ``<interface type='vhostuser'/>`` was given various improvements. So far, libvirt assumed vhostuser interfaces are handled exclusively by OpenVSwitch and refused to start a guest if it was not so. Now a guest can be started successfully even if the interface is created by some other tool (e.g. ``dpdk-testpmd``). Also, the code that detects the interface name was adapted to new versions of OpenVSwitch and thus can detect name more reliably. * qemu: Report guest disks informations in ``virDomainGetGuestInfo`` Libvirt is now able to report disks and filesystems from the guest's perspective (using guest agent). And with sufficiently new guest agent (5.3.0 or newer) the API also handles disks on CCW bus. * Bug fixes * qemu: Fix logic bug in inactive snapshot deletion This release fixes a bug introduced in libvirt-6.9 where libvirt's snapshot metadata would not be deleted on successful snapshot deletion. * qemu: Fix VMs with ``<iotune>`` on an empty cdrom Specifying ``<iotune>`` for an empty cdrom would prevent the VM from starting as qemu doesn't accept the tuning for an empty drive. We now postpone setting the parameters until a new media is inserted. * Avoid taking extra host memory when launching pSeries guests Under certain conditions, pSeries guests were being launched with more RAM than it was specified in the domain XML by the user. New pSeries domains created with libvirt 7.0.0 will always launch with the right amount of initial memory. Existing guests that migrate from an older libvirt version to 7.0.0 will not be affected by this change. * qemu: Don't cache NUMA caps ``virsh capabilities`` contains ``<topology/>`` section which reports NUMA topology among with amount of free hugepages per each NUMA node. However, these amounts were not updated between calls. * networkGetDHCPLeases: Handle leases with infinite expiry time Since libvirt-6.3.0 it is possible to configure expiry time for DHCP leases. If the expiry time was infinite then ``virsh net-dhcp-leases`` and NSS plugins refused to work. * qemu: Don't prealloc mem for real NVDIMMs If a real life NVDIMM is assigned to a guest via ``<memory model='nvdimm'/>`` then QEMU is no longer instructed to preallocate memory for it. This prevents unnecessary wear on the NVDIMM. * network: Introduce mutex for bridge name generation When new libvirt network is defined or created and the input XML does not contain any bridge name, libvirt generates one. However, it might have happened that the same name would be generated for different networks if two or more networks were defined/created at once. Enjoy. Jirka