Go to file
Eric Blake af65695af0 snapshot: allow recreation of metadata
The first two flags are essential for being able to replicate
snapshot hierarchies across multiple hosts, which will come in
handy for supervised migrations.  It also allows a management app
to take a snapshot of a transient domain, save the metadata, stop
the domain, recreate a new transient domain by the same name,
redefine the snapshot, then revert to it.

This is not quite as convenient as leaving the metadata behind
after a domain is no longer around, but doing that has a few
problems: 1. the libvirt API can only delete snapshot metadata
if there is a valid domain handle to use to get to that snapshot
object - if stale data is left behind without a domain, there is
no way to request that the data be cleaned up. 2. creating a new
domain with the same name but different uuid than the older
domain where a snapshot existed cannot use the older snapshot
data; this risks confusing libvirt, and forbidding the stale
data is similar to the recent patch to forbid stale managed save.

The first two flags might be useful on hypervisors with no metadata,
but only for modifying the notion of the current snapshot;
however, I don't know how to do that for ESX or VBox.

The third flag is a convenience option, to combine a creation with
a delete metadata into one step.  It is trivial for hypervisors
with no metadata.

The qemu changes will be involved enough to warrant a separate patch.

* include/libvirt/libvirt.h.in
(VIR_DOMAIN_SNAPSHOT_CREATE_REDEFINE)
(VIR_DOMAIN_SNAPSHOT_CREATE_CURRENT)
(VIR_DOMAIN_SNAPSHOT_CREATE_NO_METADATA): New flags.
* src/libvirt.c (virDomainSnapshotCreateXML): Document them, and
enforce mutual exclusion.
* src/esx/esx_driver.c (esxDomainSnapshotCreateXML): Trivial
implementation.
* src/vbox/vbox_tmpl.c (vboxDomainSnapshotCreateXML): Likewise.
* docs/formatsnapshot.html.in: Document re-creation.
2011-09-02 17:44:42 -06:00
.gnulib@a6b16b69fe build: fix compilation on mingw64 2011-08-19 07:20:10 -06:00
daemon libvirtd: create run dir when running at non-root user 2011-09-01 20:32:10 -06:00
docs snapshot: allow recreation of metadata 2011-09-02 17:44:42 -06:00
examples snapshot: better events when starting paused 2011-09-02 10:00:06 -06:00
gnulib freebsd: Fix build problem due to picking up the wrong libvirt.h 2011-07-29 07:35:54 -06:00
include snapshot: allow recreation of metadata 2011-09-02 17:44:42 -06:00
m4 tests: Lower stack usage below 4096 bytes 2011-04-30 19:59:52 +02:00
po hyperv: Add basic driver for Microsoft Hyper-V 2011-08-26 17:52:55 +02:00
python Add public API for getting migration speed 2011-09-01 11:26:21 -06:00
src snapshot: allow recreation of metadata 2011-09-02 17:44:42 -06:00
tests Learn to use spicevmc as a redirection type for usb-redir 2011-09-02 23:39:03 +08:00
tools snapshot: reflect new dumpxml and list options in virsh 2011-09-02 17:07:36 -06:00
.dir-locals.el maint: let emacs avoid tabs in rng files 2011-08-13 08:56:26 -06:00
.gitignore hyperv: Add OpenWSMAN based client for the Hyper-V WMI API 2011-08-26 17:52:55 +02:00
.gitmodules make .gnulib a submodule 2009-07-08 16:17:51 +02:00
.mailmap Change my email domain 2011-09-01 16:13:34 -06:00
AUTHORS libvirtd: create run dir when running at non-root user 2011-09-01 20:32:10 -06:00
COPYING.LIB remove all trailing blank lines 2009-07-16 15:06:42 +02:00
ChangeLog-old generate ChangeLog from git logs into distribution tarball 2009-07-08 16:17:51 +02:00
HACKING build: rename files.h to virfile.h 2011-07-21 10:34:51 -06: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
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
autobuild.sh Remove the Open Nebula driver 2011-03-28 14:09:11 +01:00
autogen.sh build: avoid problems with autogen.sh runs from tarball 2011-02-12 06:28:28 -07:00
bootstrap build: fix compilation on mingw64 2011-08-19 07:20:10 -06:00
bootstrap.conf Add API for duplicating a socket/client file descriptor 2011-08-15 15:21:26 +02:00
cfg.mk hyperv: Add driver skeleton 2011-08-26 17:52:55 +02:00
configure.ac storage: Add mkfs and libblkid to build system 2011-09-02 21:16:50 +08:00
libvirt.pc.in * libvirt.pc.in: applied patch from Daniel Berrange to fix --cflags 2006-03-24 13:18:12 +00:00
libvirt.spec.in storage: Add mkfs and libblkid to build system 2011-09-02 21:16:50 +08:00
mingw32-libvirt.spec.in conf: put virtPortProfile struct / functions in a common location 2011-07-21 14:46:33 -04:00

README

         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>