Issued:
2012-11-22
Updated:
2012-11-22

RHBA-2012:1484 - libvirt bug fix update


Synopsis

libvirt bug fix update

Type/Severity

Bug Fix Advisory

Topic

Updated libvirt packages that fix several bugs are now available for Red Hat Enterprise Linux 6.

Description

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 remote management of virtualized systems.

This update fixes the following bugs:

  • When libvirt could not find a suitable CPU model for a host CPU, it would not provide the CPU topology in host capabilities even though the topology was detected correctly. Consequently, applications that work with the host CPU topology but not with the CPU model could not see the topology in host capabilities. With this update, the host capabilities XML description contains the host CPU topology even if the host CPU model is unknown. (BZ#868972)

  • Previously, the fixed limit for the maximum size of an RPC message that could be supplied to the libvirtd daemon (65536 bytes) was not always sufficient. Consequently, messages that were longer than that could be dropped, leaving a client unable to fetch important data. With this update, the buffer for incoming messages has been made dynamic and libvirtd now allocates as much memory as is needed for a given message, thus allowing to send much bigger messages. (BZ#869650)

  • Prior to this update, libvirt used an unsuitable detection procedure to detect NUMA and processor topology of a system. Consequently, topology of some advanced multi-processor systems was detected incorrectly and management applications could not utilize the full potential of the system. Now, the detection has been improved and the topology is properly recognized even on modern systems. (BZ#869723)

  • Under certain circumstances, the iohelper process failed to write data to disk while saving a domain and kernel did not report an out-of-space error (ENOSPC). With this update, libvirt calls the fdatasync() function in the described scenario to force the data to be written to disk or catch a write error. As a result, if a write error occurs, it is now properly caught and reported. (BZ#873292)

  • Certain operations in libvirt can be done only when a domain is paused to prevent data corruption. However, if a resuming operation failed, the management application was not notified since no event was sent. This update introduces the VIR_DOMAIN_EVENT_SUSPENDED_API_ERROR event and management applications can now keep closer track of domain states and act accordingly. (BZ#874235)

  • Libvirt allows users to cancel an ongoing migration. Previously, if an attempt to cancel the migration was made in the migration preparation phase, qemu missed the request and the migration was not canceled. With this update, the virDomainAbortJob() function sets a flag when a cancel request is made and this flag is checked before the main phase of the migration starts. As a result, a migration can now be properly canceled even in the preparation phase. (BZ#875770)

  • When a qemu process is being destroyed by libvirt, a clean-up operation frees some internal structures and locks. However, since users can destroy qemu processes at the same time, libvirt holds the qemu driver lock to protect the list of domains and their states, among other things. Previously, a function tried to set up the qemu driver lock when it was already up, creating a deadlock. The code has been modified to always check if the lock is free before attempting to set it up, thus fixing this bug. (BZ#875788)

All users of libvirt are advised to upgrade to these updated packages, which fix these bugs.

Solution

Before applying this update, make sure that all previously-released errata relevant to your system have been applied.

This update is available via Red Hat Network. Details on how to use the Red Hat Network to apply this update are available at https://access.redhat.com/knowledge/articles/11258

Affected Products

ProductVersionArch
Red Hat Enterprise Linux for x86_64 - Extended Update Support6.3x86_64
Red Hat Enterprise Linux for x86_64 - Extended Update Support6.3i386
Red Hat Enterprise Linux for Scientific Computing6x86_64
Red Hat Enterprise Linux for Power, big endian6ppc64
Red Hat Enterprise Linux for Power, big endian - Extended Update Support6.3ppc64
Red Hat Enterprise Linux for IBM z Systems6s390x
Red Hat Enterprise Linux for IBM z Systems - Extended Update Support6.3s390x
Red Hat Enterprise Linux Workstation6x86_64
Red Hat Enterprise Linux Workstation6i386
Red Hat Enterprise Linux Server6x86_64
Red Hat Enterprise Linux Server6i386
Red Hat Enterprise Linux Server from RHUI6x86_64
Red Hat Enterprise Linux Server from RHUI6i386
Red Hat Enterprise Linux Server - Retired Extended Life Cycle Support6x86_64
Red Hat Enterprise Linux Server - Extended Update Support from RHUI6.3x86_64
Red Hat Enterprise Linux Server - Extended Update Support from RHUI6.3i386
Red Hat Enterprise Linux Server - Extended Life Cycle Support6x86_64
Red Hat Enterprise Linux Server - Extended Life Cycle Support6i386
Red Hat Enterprise Linux Server - Extended Life Cycle Support Extension6x86_64
Red Hat Enterprise Linux Server - Extended Life Cycle Support Extension6i386
Red Hat Enterprise Linux Server - Extended Life Cycle Support Extension (for IBM z Systems)6s390x
Red Hat Enterprise Linux Server - Extended Life Cycle Support (for IBM z Systems)6s390x
Red Hat Enterprise Linux Desktop6x86_64
Red Hat Enterprise Linux Desktop6i386

Updated Packages

  • libvirt-client-0.9.10-21.el6_3.6.x86_64.rpm
  • libvirt-debuginfo-0.9.10-21.el6_3.6.ppc64.rpm
  • libvirt-debuginfo-0.9.10-21.el6_3.6.i686.rpm
  • libvirt-0.9.10-21.el6_3.6.x86_64.rpm
  • libvirt-devel-0.9.10-21.el6_3.6.x86_64.rpm
  • libvirt-devel-0.9.10-21.el6_3.6.i686.rpm
  • libvirt-devel-0.9.10-21.el6_3.6.ppc64.rpm
  • libvirt-client-0.9.10-21.el6_3.6.ppc.rpm
  • libvirt-client-0.9.10-21.el6_3.6.ppc64.rpm
  • libvirt-lock-sanlock-0.9.10-21.el6_3.6.x86_64.rpm
  • libvirt-debuginfo-0.9.10-21.el6_3.6.s390x.rpm
  • libvirt-client-0.9.10-21.el6_3.6.s390x.rpm
  • libvirt-debuginfo-0.9.10-21.el6_3.6.x86_64.rpm
  • libvirt-python-0.9.10-21.el6_3.6.s390x.rpm
  • libvirt-client-0.9.10-21.el6_3.6.s390.rpm
  • libvirt-python-0.9.10-21.el6_3.6.i686.rpm
  • libvirt-client-0.9.10-21.el6_3.6.i686.rpm
  • libvirt-0.9.10-21.el6_3.6.ppc64.rpm
  • libvirt-devel-0.9.10-21.el6_3.6.ppc.rpm
  • libvirt-0.9.10-21.el6_3.6.src.rpm
  • libvirt-debuginfo-0.9.10-21.el6_3.6.s390.rpm
  • libvirt-devel-0.9.10-21.el6_3.6.s390x.rpm
  • libvirt-debuginfo-0.9.10-21.el6_3.6.ppc.rpm
  • libvirt-0.9.10-21.el6_3.6.i686.rpm
  • libvirt-0.9.10-21.el6_3.6.s390x.rpm
  • libvirt-python-0.9.10-21.el6_3.6.x86_64.rpm
  • libvirt-devel-0.9.10-21.el6_3.6.s390.rpm
  • libvirt-python-0.9.10-21.el6_3.6.ppc64.rpm

Fixes

CVEs

(none)

References

(none)


Additional information