Previously we were only starting or stopping nbdkit when the guest was started or stopped or when hotplugging/unplugging a disk. But when doing block operations, the disk backing store sources can also be be added or removed independently of the disk device. When this happens the nbdkit backend was not being handled properly. For example, when doing a blockcopy from a nbdkit-backed disk to a new disk and pivoting to that new location, the nbdkit process did not get cleaned up properly. Add some functionality to qemuDomainStorageSourceAccessModify() to handle this scenario. Since we're now starting nbdkit from the ChainAccessAllow/Revoke() functions, we no longer need to explicitly start nbdkit in hotplug code paths because the hotplug functions already call these allow/revoke functions and will start/stop nbdkit if necessary. Add a check to qemuNbdkitProcessStart() to report an error if we are trying to start nbdkit for a disk source that already has a running nbdkit process. This shouldn't happen, and if it does it indicates an error in another part of our code. Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com> Reviewed-by: Peter Krempa <pkrempa@redhat.com>
Libvirt API for virtualization
Libvirt provides a portable, long term stable C API for managing the virtualization technologies provided by many operating systems. It includes support for QEMU, KVM, Xen, LXC, bhyve, Virtuozzo, VMware vCenter and ESX, VMware Desktop, Hyper-V, VirtualBox and the POWER Hypervisor.
For some of these hypervisors, it provides a stateful management daemon which runs on the virtualization host allowing access to the API both by non-privileged local users and remote users.
Layered packages provide bindings of the libvirt C API into other languages including Python, Perl, PHP, Go, Java, OCaml, as well as mappings into object systems such as GObject, CIM and SNMP.
Further information about the libvirt project can be found on the website:
License
The libvirt C API is distributed under the terms of GNU Lesser General Public License, version 2.1 (or later). Some parts of the code that are not part of the C library may have the more restrictive GNU General Public License, version 2.0 (or later). See the files COPYING.LESSER
and COPYING
for full license terms & conditions.
Installation
Instructions on building and installing libvirt can be found on the website:
https://libvirt.org/compiling.html
Contributing
The libvirt project welcomes contributions in many ways. For most components the best way to contribute is to send patches to the primary development mailing list. Further guidance on this can be found on the website:
https://libvirt.org/contribute.html
Contact
The libvirt project has two primary mailing lists:
- users@lists.libvirt.org (for user discussions)
- devel@lists.libvirt.org (for development only)
Further details on contacting the project are available on the website: