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 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list