Qemu provides several mechanism which could be called "snapshots"

1. monitor command **snapshot**
2. internal snapshots of qcow2 images.
3. Creating images with backing store using qemu-img.

These snapshots better suited for different purposes.

We are managing developer/tester workstations, so our snapshots are known good states of virtual machine which can be restored after machine put into chaos by user experiments i.e. installing new software, running untested binaries etc.

As it is workstation, it does no harm to power it down for few minutes or reboot, So, we support only snapshots of powered off systems. Smapshotting powered off systems causes less problems with removable device, deals with consistent filesystem states and is more reliable.

We choose last method of doing snapshots.

Making snapshot is to create new image file which uses old as backing store and using it instead of old one in the machine configuration.

Reverting to snapshot is removing latest image file and reverting to use its backing file.

Deletion of snapshot is commintng changes into backing file and using it.
(so it is called commit).

Snapshots are orgatized as linear stack, because it is harmful to write into backing file directly. So we do not (yet) support snapshot branching.