The 9.6.0 release of both libvirt and libvirt-python is tagged and signed tarballs and source RPMs are available at https://download.libvirt.org/ https://download.libvirt.org/python/ Thanks everybody who helped with this release by sending patches, reviewing, testing, or providing feedback. Your work is greatly appreciated. * Security * ``CVE-2023-3750``: Fix race condition in storage driver leading to a crash In libvirt-8.3 a bug was introduced which in rare cases could cause ``libvirtd`` or ``virtstoraged`` to crash if multiple clients attempted to look up a storage volume by key, path or target path, while other clients attempted to access something from the same storage pool. * Improvements * apparmor: All profiles and abstractions now support local overrides This has long been the case for the ``virt-aa-helper`` profile, but has now been extended to all other profiles and abstractions. The mechanism used is the standard AppArmor 3.x one, where the contents of ``foo`` and ``abstractions/foo`` can be overridden by creating ``local/foo`` and ``abstractions/foo.d`` respectively. * qemu: Support ``removable`` attribute for scsi disk Now the scsi disk device (``/disk@device='disk'`` and ``/disk/target@bus='scsi'``) supports the ``removable`` attribute at ``/disk/target@removable```. * qemu: Add NUMA node automatically for memory hotplug Users no longer need to specify guest NUMA node in the domain XML when enabling memory hotplug, libvirt automatically adds one when it is missing. * qemu: Consider ``BeeGFS`` as a shared filesystem Allow migration with non-shared storage for VMs accessing storage via ``BeeGFS``. * Bug fixes * qemu: Adapt to new way of specifying PC speaker PC speaker is now usable again with newer QEMU since the change of how it is specified on the command line. * qemu_tpm: Try harder to create emulator state Libvirt no longer considers empty directory valid SWTPM state and setup is now run properly in such case. Enjoy. Jirka