Hi, everyone.
The details for instant snapshot are given in main patch "qemu: support
instant snapshots". Here I only want to mention two moments.
First as instant snapshot API is synchronous we need to add an event
that snapshot moment in time is passed so that client is free to make
changes to guest. This way client can make use of instant snapshot while
memory is still being written to disk.
Second there is work in progress on adding asynchronous revert to
snapshot [1]. The idea is to write memory during snapshot in such a way
that it is possible to do a revert to snapshot in background. Namely
start guest on revert with only minimal amount of memory restored from
disk and then restore memory in background in postcopy migration
fashion. In order to make it possible snapshot memory should be written to
disk not just as plain migration stream. Thus the [1] patch adds
a special tool to write the migration stream during snapshot.
So if/when patch [1] will be merged I plan to add 'instant revert' mode
to snapshot too.
[1] [RFC PATCH v2 0/7] migration/snapshot: External snapshot utility
https://lists.nongnu.org/archive/html/qemu-devel/2021-05/msg03619.html
Nikolay Shirokovskiy (9):
qemu: make snap possibility check before pausing CPUS
qemu: snapshot: remove redundant flag setting
qemu: don't bother saving ret code from qemuDomainSaveMemory
qemu: move virQEMUSaveDataFree auto decl to header
qemu: factor out qemuDomainSnapshotSaveMemory
qemu: introduce qemuMigrationParamsSetCapability
qemu: support instant mode in qemuMigrationSrcToFile
qemu: support instant snapshots
virsh: add --instant flag to snapshot-create
docs/manpages/virsh.rst | 8 +-
include/libvirt/libvirt-domain-snapshot.h | 2 +
src/qemu/qemu_driver.c | 4 +-
src/qemu/qemu_migration.c | 20 ++-
src/qemu/qemu_migration.h | 1 +
src/qemu/qemu_migration_params.c | 13 ++
src/qemu/qemu_migration_params.h | 5 +
src/qemu/qemu_saveimage.c | 4 +-
src/qemu/qemu_saveimage.h | 2 +
src/qemu/qemu_snapshot.c | 158 +++++++++++++++-------
tools/virsh-snapshot.c | 6 +
11 files changed, 162 insertions(+), 61 deletions(-)
--
2.27.0