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.
Go to file
Eric Blake 8e532d3403 qemu: improve errors related to offline domains
https://bugzilla.redhat.com/show_bug.cgi?id=816662 pointed out
that attempting 'virsh blockpull' on an offline domain gave a
misleading error message about qemu lacking support for the
operation, even when qemu was specifically updated to support it.
The real problem is that we have several capabilities that are
only determined when starting a domain, and therefore are still
clear when first working with an inactive domain (namely, any
capability set by qemuMonitorJSONCheckCommands).

While this patch was able to hoist an existing check in one of the
three culprits, it had to add redundant checks in the other two
places (because you always have to check for an active domain after
obtaining a VM job lock, but the capability bits were being checked
prior to obtaining the job lock).

Someday it would be nice to patch libvirt to cache the set of
capabilities per qemu binary (as determined by inode and timestamp),
rather than re-probing the binary every time a domain is started,
and to teach the cache how to query the monitor during the one
time the probe is made rather than having to wait until a guest
is started; then, a capability probe would succeed even for offline
guests because it just refers to the cache, and the single check for
an active domain after grabbing the job lock would be sufficient.
But since that will involve a lot more coding, I'm happy to go
with this simpler solution for an immediate solution.

* src/qemu/qemu_driver.c (qemuDomainPMSuspendForDuration)
(qemuDomainSnapshotCreateXML, qemuDomainBlockJobImpl): Check for
offline state before checking an online-only cap.
2012-04-26 16:43:05 -06:00
.gnulib@bb2f5640d5 build: fix bootstrap on RHEL 2012-04-25 16:25:49 -06:00
daemon The policy kit and HAL node device drivers both require a 2012-04-19 17:03:10 +01:00
docs blockjob: enhance xml to track mirrors across libvirtd restart 2012-04-23 08:43:33 -06:00
examples Revert "Refactor the libvirt RPM daemon pieces" 2012-04-03 14:49:31 +08:00
gnulib build: fix fresh checkout on RHEL5 2012-04-19 17:11:43 -06:00
include blockjob: add new API flags 2012-04-23 07:44:29 -06:00
m4 Enable all warnings permanently & default to -Werror for GIT builds 2012-03-27 17:08:06 +01:00
po The policy kit and HAL node device drivers both require a 2012-04-19 17:03:10 +01:00
python Fix compilation error on 32bit 2012-04-10 06:24:03 -04:00
src qemu: improve errors related to offline domains 2012-04-26 16:43:05 -06:00
tests blockjob: enhance xml to track mirrors across libvirtd restart 2012-04-23 08:43:33 -06:00
tools blockjob: add 'blockcopy' to virsh 2012-04-23 07:44:30 -06:00
.dir-locals.el maint: let emacs avoid tabs in rng files 2011-08-13 08:56:26 -06:00
.gitignore gitignore: Reorder alphabetically 2012-04-13 13:47:13 +02:00
.gitmodules make .gnulib a submodule 2009-07-08 16:17:51 +02:00
.mailmap maint: prune duplicate listings in AUTHORS 2012-02-03 09:56:45 -07:00
AUTHORS esx: Fix segfault in esxConnectToHost 2012-04-21 14:13:22 +02:00
autobuild.sh Enable all warnings permanently & default to -Werror for GIT builds 2012-03-27 17:08:06 +01:00
autogen.sh build: allow for local gnulib diffs 2011-11-09 09:03:33 -07:00
bootstrap build: fix bootstrap on RHEL 2012-04-25 16:25:49 -06:00
bootstrap.conf build: fix bootstrap on RHEL 2012-04-25 16:25:49 -06:00
cfg.mk build: avoid strtol and strtod 2012-04-19 17:42:53 -06:00
ChangeLog-old virterror.c: Fix several spelling mistakes 2012-02-03 11:32:51 -07:00
configure.ac build: fix bootstrap on RHEL 2012-04-25 16:25:49 -06:00
COPYING.LIB remove all trailing blank lines 2009-07-16 15:06:42 +02:00
HACKING Document STREQ_NULLABLE and STRNEQ_NULLABLE 2011-10-06 16:50:38 +02:00
libvirt.pc.in Fix typos in API XML file paths 2012-02-15 11:29:38 +00:00
libvirt.spec.in Fix initial hypervisor conditionals 2012-04-04 10:54:20 +01:00
Makefile.am maint: add missing copyright notices 2011-07-28 15:01:17 -06:00
Makefile.nonreentrant Ban use of all inet_* functions 2010-10-22 11:59:23 +01:00
mingw32-libvirt.spec.in Fix typos in API XML file paths 2012-02-15 11:29:38 +00:00
README Correct typos in the documentation (Atsushi SAKAI) 2008-01-24 10:15:13 +00:00
README-hacking maint: relax git minimum version 2010-02-24 14:29:27 -05:00
TODO Update todo list file to point at bugzilla/website 2010-10-13 16:45:26 +01:00

         LibVirt : simple API for virtualization

  Libvirt is a C toolkit to interact with the virtualization capabilities
of recent versions of Linux (and other OSes). It is free software
available under the GNU Lesser General Public License. Virtualization of
the Linux Operating System means the ability to run multiple instances of
Operating Systems concurrently on a single hardware system where the basic
resources are driven by a Linux instance. The library aim at providing
long term stable C API initially for the Xen paravirtualization but
should be able to integrate other virtualization mechanisms if needed.

Daniel Veillard <veillard@redhat.com>