As promised, here is my v3, which includes all the self-replies
I was scattering throughout v2:
https://www.redhat.com/archives/libvir-list/2011-August/msg00620.html
Also available here:
git fetch git://repo.or.cz/libvirt/ericb.git snapshot
or browse online at:
http://repo.or.cz/w/libvirt/ericb.git/shortlog/refs/heads/snapshot
I've tested that this can create external disk snapshots with
SELinux running using the qemu snapshot_blkdev monitor command,
then deleting the metadata for those snapshots.
Other things from my RFC still remain to be coded:
https://www.redhat.com/archives/libvir-list/2011-August/msg00361.html
support for offline external disk snapshots
support for more flags (such as starting an offline snapshot on revert)
support for revert and delete of disk snapshots
new apis for easier manipulation of snapshot hierarchies
Eric Blake (43):
snapshot: better event when reverting qemu to paused snapshot
snapshot: improve reverting to qemu paused snapshots
snapshot: properly revert qemu to offline snapshots
snapshot: don't leak resources on qemu snapshot failure
snapshot: only pass snapshot to qemu command line when reverting
snapshot: track current snapshot across restarts
snapshot: allow deletion of just snapshot metadata
snapshot: avoid crash when deleting qemu snapshots
snapshot: simplify acting on just children
snapshot: let qemu discard only snapshot metadata
snapshot: identify which snapshots have metadata
snapshot: identify qemu snapshot roots
snapshot: prevent stranding snapshot data on domain destruction
snapshot: refactor some qemu code
snapshot: cache qemu-img location
snapshot: support new undefine flags in qemu
snapshot: teach virsh about new undefine flags
snapshot: prevent migration from stranding snapshot data
snapshot: refactor domain xml output
snapshot: allow full domain xml in snapshot
snapshot: correctly escape generated xml
snapshot: update rng to support full domain in xml
snapshot: store qemu domain details in xml
snapshot: additions to domain xml for disks
snapshot: reject transient disks where code is not ready
snapshot: reflect recent options in virsh
snapshot: introduce new deletion flag
snapshot: expose new delete flag in virsh
snapshot: allow halting after snapshot
snapshot: refactor virsh snapshot creation
snapshot: expose halt-after-creation in virsh
snapshot: wire up new qemu monitor command
snapshot: support extra state in snapshots
snapshot: add <disks> to snapshot xml
snapshot: also support disks by path
snapshot: add virsh domblklist command
snapshot: add flag for requesting disk snapshot
snapshot: reject unimplemented disk snapshot features
snapshot: make it possible to audit external snapshot
snapshot: wire up disk-only flag to snapshot-create
snapshot: wire up live qemu disk snapshots
snapshot: refactor qemu file opening
snapshot: use SELinux and lock manager with external snapshots
docs/formatdomain.html.in | 40 +-
docs/formatsnapshot.html.in | 253 ++-
docs/schemas/Makefile.am | 1 +
docs/schemas/domain.rng | 2555 +-------------------
docs/schemas/{domain.rng => domaincommon.rng} | 32 +-
docs/schemas/domainsnapshot.rng | 89 +-
include/libvirt/libvirt.h.in | 62 +-
src/conf/domain_audit.c | 12 +-
src/conf/domain_audit.h | 4 +-
src/conf/domain_conf.c | 861 ++++++--
src/conf/domain_conf.h | 75 +-
src/esx/esx_driver.c | 41 +-
src/libvirt.c | 132 +-
src/libvirt_private.syms | 8 +
src/libxl/libxl_conf.c | 5 +
src/libxl/libxl_driver.c | 11 +-
src/qemu/qemu_command.c | 12 +-
src/qemu/qemu_conf.h | 1 +
src/qemu/qemu_driver.c | 1611 +++++++++----
src/qemu/qemu_hotplug.c | 18 +-
src/qemu/qemu_migration.c | 2 +-
src/qemu/qemu_monitor.c | 24 +
src/qemu/qemu_monitor.h | 4 +
src/qemu/qemu_monitor_json.c | 33 +
src/qemu/qemu_monitor_json.h | 4 +
src/qemu/qemu_monitor_text.c | 40 +
src/qemu/qemu_monitor_text.h | 4 +
src/qemu/qemu_process.c | 21 +-
src/qemu/qemu_process.h | 1 +
src/uml/uml_driver.c | 56 +-
src/vbox/vbox_tmpl.c | 46 +-
src/xen/xend_internal.c | 12 +-
src/xenxs/xen_sxpr.c | 5 +
src/xenxs/xen_xm.c | 5 +
tests/domainsnapshotxml2xmlin/disk_snapshot.xml | 16 +
tests/domainsnapshotxml2xmlout/disk_snapshot.xml | 77 +
tests/domainsnapshotxml2xmlout/full_domain.xml | 35 +
.../qemuxml2argv-disk-snapshot.args | 7 +
.../qemuxml2argv-disk-snapshot.xml | 39 +
.../qemuxml2argv-disk-transient.xml | 27 +
tests/qemuxml2argvtest.c | 2 +
tools/virsh.c | 755 +++++-
tools/virsh.pod | 111 +-
43 files changed, 3616 insertions(+), 3533 deletions(-)
copy docs/schemas/{domain.rng => domaincommon.rng} (98%)
create mode 100644 tests/domainsnapshotxml2xmlin/disk_snapshot.xml
create mode 100644 tests/domainsnapshotxml2xmlout/disk_snapshot.xml
create mode 100644 tests/domainsnapshotxml2xmlout/full_domain.xml
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-disk-snapshot.args
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-disk-snapshot.xml
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-disk-transient.xml
--
1.7.4.4