The 7.1.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. * Portability * Implement Apple Silicon support libvirt now runs on the ARM-based Apple Silicon Macs. * New features * Introduce virtio-pmem ``<memory/>`` model The virtio-pmem is a virtio variant of NVDIMM and just like NVDIMM virtio-pmem also allows accessing host pages bypassing guest page cache. * Introduce ``<boot order/>`` for ``<filesystem>`` Booting is possible from virtiofs filesystems. Introduce an option to control the boot order, like we do for other bootable devices. * hyperv: implement new APIs The ``virDomainUndefine()``, ``virDomainUndefineFlags()``, ``virDomainDefineXML()``, ``virDomainAttachDevice()``, and ``virDomainAttachDeviceFlags()``, ``virConnectListAllNetworks()``, ``virConnectNumOfNetworks()``, ``virNetworkLookupByName()``, ``virNetworkLookupByUUID()``, ``virConnectNumOfDefinedNetworks()``, ``virConnectListDefinedNetworks()``, ``virNetworkGetAutostart()``, ``virNetworkIsActive()``, ``virNetworkIsPersistent()``, ``virNetworkGetXMLDesc()``, and ``virDomainScreenshot()``, APIs have been implemented in the Hyper-V driver. * Support <teaming> element in plain <hostdev> devices This is useful when libvirt doesn't have the privileges necessary to set the hostdev device's MAC address (which is a necessary part of the alternate <interface type='hostdev'>). * Introduce ``<disk type='vhostuser'>`` support Introduces support for QEMU vhost-user-blk device that can be used to access storage exported via the vhost-user protocol by daemons such as the ``qemu-storage-daemon``. * Bug fixes * qemu: Fix disk quiescing rollback when creating external snapshots If the qemu guest agent call to freeze filesystems failed when creating an external snapshot with ``VIR_DOMAIN_SNAPSHOT_CREATE_QUIESCE`` flag the filesystems would be unconditionally thawed. This could cause problems when the filesystems were frozen by an explicit call to ``virDomainFSFreeze`` since the guest agent then rejects any further freeze attempts once are filesystems frozen, an explicit freeze followed by a quiesced snapshot would fail and thaw filesystems. Users are also encouraged to use ``virDomainFSFreeze/Thaw`` manually instead of relying on ``VIR_DOMAIN_SNAPSHOT_CREATE_QUIESCE`` if they need finer grained control. * cgroups: Fix how we setup and configure cgroups on hosts with systemd When libvirt is running on host with systemd we register every VM with machined which creates the VM root cgroup for us as well. Before this fix we were directly modifying files in the VM root cgroup which was incorrect because all the files are managed by systemd. The implication was that any change done by libvirt to cgroup attributes supported by systemd could be removed which happens for example by running ``systemctl daemon-reload``. To fix the issue libvirt now uses DBus calls for some of the cgroup attributes that distribute the resources proportionally to the cgroup siblings and for the rest we have a new sub-cgroup that libvirt can managed directly. For more details why this is necessary see `systemd cgroup <https://systemd.io/CGROUP_DELEGATION/>`_ documentation. * qemu: Fix swtpm device with aarch64 The TPM TIS device name for x86 is ``tpm-tis``, whereas for aarch64 it is ``tpm-tis-device``. Fix the use of TPM TIS device with aarch64 by using the proper device name when building the QEMU command line. * libxl: Fix domain shutdown Commit fa30ee04a2 introduced the possibility of a race between the shutdown and death threads used to process domain shutdown and death events from libxl. On normal domain shutdown the shutdown thread handles all aspects of shutting down and cleaning up the domain. The death thread is only used to handle out-of-band domain destruction and is inhibited when domain shutdown is under libvirt's control. The race is avoided by also inhibiting the death thread when libvirt starts the shutdown thread. Enjoy. Jirka