The 10.0.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.
* New features
* qemu: Enable ``postcopy-preempt`` migration capability
Post-copy migrations are now started with ``postcopy-preempt``
capability enabled as long as it is supported by both sides of migration.
This should enable faster migration of memory pages that the destination
tries to read before they are migrated from the source.
* qemu: Add support for mapping iothreads to virtqueues of ``virtio-blk`` devices
QEMU added the possibility to map multiple ``iothreads`` to a single
``virtio-blk`` device and map them even to specific virtqueues. Libvirt
adds a ``<iothreads>`` subelement of the ``<disk> <driver>`` element
that
users can use to configure the mapping.
* qemu: Allow automatic resize of block-device-backed disk to full size of the device
The new flag ``VIR_DOMAIN_BLOCK_RESIZE_CAPACITY`` for
``virDomainBlockResize`` allows resizing a block-device backed ``raw`` disk
of a VM without the need to specify the full size of the block device.
* qemu: automatic selection/binding of VFIO variant drivers
When a device is assigned to a guest using VFIO with ``<hostdev
managed='yes'>``, libvirt will now search the running kernel's
modules.alias file for the most specific match to that device for
a VFIO driver, and bind that driver to the device rather than
vfio-pci. A specific driver can also be forced, using the
``<driver model='plugh'/>`` attribute.
* qemu: add runtime configuration option for nbdkit
Since the new nbdkit support requires a recent selinux policy that is not
widely available yet, it is now possible to build libvirt with nbdkit
support for remote disks but disabled at runtime. This behavior is
controlled via the storage_use_nbdkit option of the qemu driver
configuration file. The option will default to being disabled, but this may
change in a future release and can be customized with the
nbdkit_config_default build option.
* Improvements
* qemu: Improve migration XML use when persisting VM on destination
When migrating a VM with a custom migration XML, use it as a base for
persisting it on the destination as users could have changed non-ABI
breaking facts which would prevent subsequent start if the old XML were used.
* qemu: Simplify non-shared storage migration to ``raw`` block devices
The phase of copying storage during migration without shared storage
requires that both the source and destination image are identical in size.
This may not be possible if the destination is backed by a block device
and the source image size is not a multiple of the block device block size.
Libvirt aleviates this by automatically adding a ``<slice>`` to match the
size of the source image rather than failing the migration.
* test driver: Support for hotplug/hotunplug of PCI devices
The test driver now supports basic hotplug and hotunplug of PCI devices.
* Bug fixes
* qemu: Various migration bug fixes and debuggability improvement
This release fixes multiple bugs in virsh and libvirt in handling of
migration arguments and XMLs and modifies error reporting for better
debugging.
* conf: Restore setting default bus for input devices
Because of a regression, starting from 9.3.0 libvirt did not autofill bus
for input devices. With this release the regression was identified and
fixed.
* qemu: Relax check for memory device coldplug
Because of a check that was too aggressive, a virtio-mem memory device
could not be cold plugged. This is now fixed.
* qemu: Be less aggressive when dropping channel source paths
Another regression is resolved, (introduced in 9.7.0) when libvirt was too
aggressive when dropping parsed paths for <channel/> sources
* qemuDomainChangeNet: Reflect trustGuestRxFilters change
On device-update, when a user requested change of trustGuestRxFilters for a
domain's <interface/> libvirt did nothing. It did not throw an error nor
did it reflect the change. Starting with this release, the change is
reflected.
Enjoy.
Jirka