================ libvirt releases ================ This is the list of official releases for libvirt, along with an overview of the changes introduced by each of them. For a more fine-grained view, use the `git log`_. v7.1.0 (unreleased) =================== * **Portability** * Implement Apple Silicon support libvirt now runs on the ARM-based Apple Silicon Macs. * **New features** * Introduce virtio-pmem ```` 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 ```` for ```` 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 element in plain 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 ). * Introduce ```` 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``. * **Improvements** * **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. v7.0.0 (2021-01-15) =================== * **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 ```` 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 ```` on an empty cdrom Specifying ```` 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 ```` 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 ```` 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. v6.10.0 (2020-12-01) ==================== * **Security** * qemu: Enable client TLS certificate validation by default for ``chardev``, ``migration``, and ``backup`` servers. The default value if qemu.conf options ``chardev_tls_x509_verify``, ``migrate_tls_x509_verify``, or ``backup_tls_x509_verify`` are not specified explicitly in the config file and also the ``default_tls_x509_verify`` config option is missing are now '1'. This ensures that only legitimate clients access servers, which don't have any additional form of authentication. * **New features** * qemu: Implement OpenSSH authorized key file management APIs New APIs (``virDomainAuthorizedSSHKeysGet()`` and ``virDomainAuthorizedSSHKeysSet()``) and virsh commands (``get-user-sshkeys`` and ``set-user-sshkeys``) are added to manage authorized_keys SSH file for user. * hyperv: implement new APIs The ``virDomainGetMaxMemory()``, ``virDomainSetMaxMemory()``, ``virDomainGetSchedulerType()``, ``virDomainGetSchedulerParameters()``, ``virDomainGetSchedulerParametersFlags()``, ``virDomainGetVcpus()``, ``virDomainGetVcpusFlags()``, ``virDomainGetMaxVcpus()``, ``virDomainSetVcpus()``, and ``virDomainSetVcpusFlags()`` APIs have been implemented in the Hyper-V driver. * **Improvements** * virsh: Support network disks in ``virsh attach-disk`` The ``virsh attach-disk`` helper command which simplifies attaching of disks without the need for the user to formulate the disk XML manually now supports network-backed images. Users can specify the protocol and host specification with new command line arguments. Please refer to the man page of virsh for further information. * **Bug fixes** * remote: fixed performance regression in SSH tunnelling The ``virt-ssh-helper`` binary introduced in 6.8.0 had very poor scalability which impacted libvirt tunnelled migration and storage volume upload/download in particular. It has been updated and now has performance on par with netcat. * **Removed features** * hyperv: removed support for the Hyper-V V1 WMI API This drops support for Windows Server 2008R2 and 2012. The earliest supported version is now Windows 2012R2. v6.9.0 (2020-11-02) =================== * **New features** * nodedev: Add support for channel subsystem (CSS) devices on S390 A CSS device is represented as a parent device of a CCW device. This support allows to create vfio-ccw mediated devices with ``virNodeDeviceCreateXML()``. * qemu: Implement memory failure event New event is implemented that is emitted whenever a guest encounters a memory failure. * qemu: Implement support for ```` disks VMs based on the QEMU hypervisor now can use ```` option for local file-backed disks to configure a disk which discards changes made to it while the VM was active. * hyperv: implement new APIs The ``virConnectGetCapabilities()``, ``virConnectGetMaxVcpus()``, ``virConnectGetVersion()``, ``virDomainGetAutostart()``, ``virDomainSetAutostart()``, ``virNodeGetFreeMemory()``, ``virDomainReboot()``, ``virDomainReset()``, ``virDomainShutdown()``, and ``virDomainShutdownFlags()`` APIs have been implemented in the Hyper-V driver. * bhyve: implement virtio-9p filesystem support Implement virito-9p shared filesystem using the ```` element. * qemu: Add support for vDPA network devices. VMs using the QEMU hypervisor can now specify vDPA network devices using ````. The node device APIs also now list and provide XML descriptions for vDPA devices. * **Bug fixes** * hyperv: ensure WQL queries work in all locales Relying on the "Description" field caused queries to fail on non-"en-US" systems. The queries have been updated to avoid using localized strings. * rpc: Fix ``virt-ssh-helper`` detection libvirt 6.8.0 failed to correctly detect the availability of the new ``virt-ssh-helper`` command on the remote host, and thus always used the fallback instead; this has now been fixed. v6.8.0 (2020-10-01) =================== * **Security** * qemu: double free in qemuAgentGetInterfaces() in qemu_agent.c Clients connecting to the read-write socket with limited ACL permissions may be able to crash the libvirt daemon, resulting in a denial of service, or potentially escalate their privileges on the system. CVE-2020-25637. * **New features** * xen: Add ``writeFiltering`` attribute for PCI devices By default Xen filters guest writes to the PCI configuration space of a PCI hostdev, which may cause problems for some devices. The ``writeFiltering`` attribute of the device's ```` element can be used to disable the filtering and allow all guest writes to the configuration space. * bhyve: Support setting the framebuffer resolution Libvirt can now set the framebuffer's "w" and "h" parameters using the ``resolution`` element. * bhyve: Support VNC password authentication Libvirt can now probe whether the bhyve binary supports VNC password authentication. In case it does, a VNC password can now be passed using the ``passwd`` attribute on the ```` element. * remote: ``virt-ssh-helper`` replaces ``nc`` for SSH tunnelling Libvirt now provides a ``virt-ssh-helper`` binary on the server side. The libvirt remote client will use this binary for setting up an SSH tunnelled connection to hosts. If not present, it will transparently fallback to the traditional ``nc`` tunnel. The new binary makes it possible for libvirt to transparently connect across hosts even if libvirt is built with a different installation prefix on the client vs server. It also enables remote access to the unprivileged per-user libvirt daemons (e.g. using a URI such as ``qemu+ssh://hostname/session``). The only requirement is that ``virt-ssh-helper`` is present in ``$PATH`` of the remote host. * esx: implement few APIs The ``virConnectListAllNetworks()``, ``virDomainGetHostname()``, and ``virDomainInterfaceAddresses()`` (only for ``VIR_DOMAIN_INTERFACE_ADDRESSES_SRC_AGENT`` source) APIs were implemented in the esx driver. * **Improvements** * qemu: Allow migration over UNIX sockets QEMU migration can now be performed completely over UNIX sockets. This is useful for containerised scenarios and can be used in both peer2peer and direct migrations. * dbus: Use GLib implementation instead of libdbus Adopting GLib DBus implementation simplifies our code as libdbus provides low-level APIs where we had to have a lot of helper functions. With this change we also remove dependency on libdbus and possibly fix all the DBus related libvirtd crashes seen over the time. * Re-introduce NVDIMM auto-alignment for pSeries Guests The auto-alignment logic was removed in v6.7.0 in favor of requiring the size provided by the user to be already aligned; however, this had the unintended consequence of breaking some existing guests. v6.8.0 restores the previous behavior with an improvement: it also reflects the auto-aligned value in the domain XML. * qemu: Preserve qcow2 cluster size after external snapshots The new overlay image which is installed on top of the current chain when taking an external snapshot now preserves the cluser size of the original top image to preserve any performance tuning done on the original image. * **Bug fixes** * qemu: Various (i)SCSI backed hostdev fixes (i)SCSI backed hostdevs now work again with an arbitrarily long user-specified device alias and also honor the 'readonly' property after a recent rewrite. * **Removed features** * node_device: Remove HAL node device backend HAL is deprecated on all supported OS so there is no need to keep it in libvirt. udev backend is used on Linux OSes and devd can be eventually implemented as replacement for FreeBSD. v6.7.0 (2020-09-01) =================== * **Packaging changes** * Libvirt switch to Meson build system Libvirt abandoned autotools and switched to Meson build system. * **New features** * qemu: Add support for initiator IQN configuration for iSCSI hostdevs Similarly to iSCSI ```` users can use an ```` element inside ```` with the same format to configure the ``IQN`` value used by the qemu initiator when connecting to an iSCSI target. * xen: Add support for device model command-line passthrough Xen supports passing arbitrary arguments to the QEMU device model using the ``device_model_args`` setting in xl.cfg(5). The libvirt xen driver now supports this using ```` XML extensions. * shmem: Add support for shmem-{plain, doorbell} ``role`` option The ``role`` attribute controls how the domain behaves on migration. With ``role=master``, the guest will copy the shared memory on migration to the destination host. With ``role=peer``, the migration is disabled. * bhyve: Sound device support This feature allows to configure guest sound device using the ```` element, and map it to the host sound device using the ``