Product SiteDocumentation Site

1.107. libvirt

1.107.1. RHBA-2009:1424: bug fix update


This update has already been released (prior to the GA of this release) as errata RHBA-2009:1424
Updated libvirt packages that resolve an issue are now available.
The libvirt library is a C API for managing and interacting with the virtualization capabilities of Linux and other operating systems. In addition, libvirt provides tools for remotely managing virtualized systems.
These updated libvirt packages fix the following bug:
* the PIT clock is the programmable interrupt timer clock, which triggers interrupts at certain counts, and is the default clock for Red Hat Enterprise Linux KVM guests. Guests which used the PIT experienced clock drift due to interrupt re-injection. The "-no-kvm-pit-reinject" option has now been added to the KVM command line, which solves potential clock drift on Red Hat Enterprise Linux KVM guests. (BZ#517903)
All libvirt users are advised to upgrade to these updated packages, which resolve this issue.

1.107.2. RHBA-2010:0205: bug fix and enhancement update

Updated libvirt packages that fix several bugs and introduce feature enhancements are now available for Red Hat Enterprise Linux 5.
These updated packages fix the following bugs:
  • On Xen guests, the netfront and RTL8192 network drivers could run concurrently, bringing up two network interfaces where only one was configured. The two interfaces would share the same MAC address and could cause networking difficulties. Support for a netfront interface model has been added, meaning only the single netfront interface is configured.
  • The storage pool deletion routine did not distinguish between files and directories when removing data. As a result, inactive storage pools could not be deleted. With this update, files and directories are removed appropriately, allowing inactive storage pools to be deleted.
  • When adding a new physical host PCI device, libvirt would not attempt to reset the PCI bus if other functions or devices were present on the same bus. Some PCI devices could not utilized for virtualization as a result. Attempts to reset the PCI bus will now be made, allowing affected devices to be used for virtualization.
  • Devices attached to a guest in managed mode were not automatically re-attached to the host OS when the guest shut down. Manual intervention was required to use these devices again when the guest is re-started. Managed mode devices will now be re-attached to the host when the guest shuts down, allowing them to be automatically used when the guest is re-started..
  • The Xen driver was not checking that guest domains with the same UUID also had the same name. Using the virsh edit command to change the name of a Xen domain would make a new copy of the configuration file with the new name, but not alter the original configuration file. UUIDs and names for guest domains are now checked to ensure they match. Attempting to change the name of a domain using the virsh edit command will now return an error message and not make any change to the system.
  • Valid values for the credit scheduler parameter are in the range 0-65534. A value of 65535 was being accepted as valid, but would not alter the scheduler configuration. With this release, only values within the valid range are accepted.
  • Using the info command to change memory values on a KVM guest showed that inactive KVM guest memory was not being reported correctly. Memory reporting for unused domains was corrected in the qemu driver and the info command now returns the correct value.
  • Running the command virsh vol-key volname was sometimes resulting in a segmentation fault. A change was made to the way pool objects are handled and the key lookup no longer crashes.
  • Using the pool parameter with the virsh vol-path command would result in errors. The virsh vol-path command was altered to support the pool parameter and the errors no longer occur.
  • The virsh find-storage-pool-sources command failed to find any dir/nfs/netfs pool sources and failed with unknown failure. The error reporting was fixed and the command now works as expected.
  • The virsh nodedev-create command resulted in an out of memory error. This was found to be a false positive. The checks were updated, and the error now only occurs if there is an actual memory problem.
  • Two different methods were using the same name for different libvirt entry points, which created a device error when creating nodes. One of the methods was renamed and node creation now works as expected.
  • Running the virsh nodedev-destroy command to destroy a NIC interface caused libvirtd to hang indefinitely. The locking issue was found and rectified and the libvirtd crash no longer occurs.
  • Running the virsh vol-delete command produced a failed to connect to the hypervisor error and libvirtd needed to be restarted. The code was altered to refresh allocation and permissions information, but not capacity information, and the command now works as expected.
  • When an XML configuration file was generated using virsh dumpxml for a running virtual machine, it contained parameters used for backwards compatibility with previous versions. virt-xml-validate would report that the generated file was not valid because of these legacy parameters. The validate program was altered to accept the parameters used in the generated XML file, which now validates correctly.
  • Running concurrent TLS connections under the libvirt python wrapper caused libvirt to crash. Changes were made to the way that GNUTLS handles threading and the crash no longer occurs.
  • libvirt was not reporting current vCPU and pCPU placement or the vCPU execution time counter accurately. The behavior was changed so that libvirt doesn't find out the affinity when set with taskset, but does when set with virsh vcpupin. The reporting is now correct.
  • Creating npiv devices works as expected, but puts error messages into the /var/log/messages file. The Opened WWN path /sys/class/fc_host//host5/port_name for reading message was updated and the error messages no longer appear in the log file.
  • The virsh man page described most operations as being asynchronous, which is not the case. The man page was updated to state that most operations are synchronous except creation and shutdown of domains.
  • Guests that use the default source clock try to compensate for lost ticks by reading the TSC as well. This can cause the guest clock to go out of synchronization. All Red Hat Enterprise Linux guests now unconditionally add --no-kvm-pit-reinjection to the qemu command line, and the guest no longer falls out of synchronization.
  • libvirt would not perform a power management reset if there were other functions on the device. The PCI Power Management reset only affects individual functions, and not the whole device. The check for other functions was removed, so that where both are available, the whole device reset is preferred over individual function resets.
  • When a migration was performed to a virtual machine that had been paused, the virtual machine would no longer be paused after the migration had completed. The behavior of qemu-kvm was changed so that it no longer 'forgets' the virtual machine is paused, and it will now stay paused during a migration.
  • libvirt was ordering disks unecessarily. When a new disk was added, it would sometimes shift the boot disk later in the list, causing the user to be unable to boot. The sorting algorithm was changed, and will now insert a new disk as far to the end of the list as possible, while being ordered correctly with other disks on the same bus. This resolved booting errors caused by disk ordering.
  • A typographical error in an XML domain file caused libvirtd to suffer a segmentation fault. A check was added, and a typing mistake will now cause libvirtd to fail gracefully and produce a meaningful error report.
  • Devices that are assigned below a non-ACS switch can cause transactions to bypass the VT-d hardware and the validation process. libvirt now successfully blocks devices between non-ACS switches, unless the user specifies the permissive='yes' attribute for <hostdev>, so all transactions now undergo validation by default.
  • When querying Xen remotely virsh would sometimes raise an "unknown failure" error. The semantics were modified and where possible, the error is now more informative.
  • When using xen+ssh:// to connect to a host, sometimes an RPC entry point would not be available and dominfo would raise an uninformative error: unknown procedure error. The error reporting was changed and it now reports as an unsupported entry point.
  • When a network created a bridge, it would only be enabled if the host had an IP on that bridge. This would cause the bridge creation to fail quietly, and packets would not be passed as expected. The error messages were improved for bridge creation and deletion, and if a failure occurs, it will now produce an informative error.
  • HVM VT-d PCI passthrough attach and detach was not working correctly and devices could not be hotplugged. The attach and detach code now has additional checks and hotplugging functions as expected.
  • When virt-manager tried to attach a PCI device to a Xen guest, it called virNodeDeviceReset and subsequently crashed. The Xen driver was updated, and it now checks if a given PCI device is assigned to another guest, so that PCI devices can be attached as expected.
  • When the host was running the KVM hypervisor, the libvirtd process was occasionally unable to connect to the hypervisor. In this case, qemu-kvm failed to start, and gave a false NUMA out of memory error. The error handling was changed so that NUMA errors are now non-fatal. Errors are now logged, and connection progresses as expected.
  • libvirt was found to be incorrectly detecting machine types supported by KVM. This meant that KVM guests which did not specify any machine type could not be created. This also caused some rare problems that would cause /distribution/virt/install to fail. libvirt was updated to correctly detect and identify KVM-supported machine types.
These updated packages add the following enhancements:
  • Support has been added for assigning Single Root I/O Virtualization (SR-IOV) devices to qemu guests.
  • Implementation of the virsh dump command for QEMU/KVM guests is included in this release.
  • Support was added to libvirt for KVM PCI device assignment hotplug.
  • Added -mem-prealloc to the KVM command line when using hugepage.
  • libvirt now allows the creation of more than 256 guests, and more than 150 DHCP leases.
  • The -M rhel5.4 arguments are now passed by default when launching qemu-kvm. This improves backward migration ability.
Users of libvirt are advised to upgrade to these updated packages, which resolve these issues and add these enhancements.

Note: This documentation is provided {and copyrighted} by Red Hat®, Inc. and is released via the Open Publication License. The copyright holder has added the further requirement that Distribution of substantively modified versions of this document is prohibited without the explicit permission of the copyright holder. The CentOS project redistributes these original works (in their unmodified form) as a reference for CentOS-5 because CentOS-5 is built from publicly available, open source SRPMS. The documentation is unmodified to be compliant with upstream distribution policy. Neither CentOS-5 nor the CentOS Project are in any way affiliated with or sponsored by Red Hat®, Inc.