No, because the copy-on-write is another layer on top of the snapshot
and AFAICT, they don't persist when moving between snapshots.
The equivalent for external snapshots would be:
base0<- base1<- base2<- image
And then if I wanted to move to base1 without destroying base2 and
image, I could do:
qemu-img create -f qcow2 -b base1 base1-overlay.img
The file system can keep a lot of these things around pretty easily but
with your proposal, it seems like there can only be one. If you support
many of them, I think you'll degenerate to something as complex as a
reference count table.
On the other hand, I think it's reasonable to just avoid the CoW overlay
entirely and say that moving to a previous snapshot destroys any of it's
children. I think this ends up being a simplifying assumption that is
worth investigating further.
No, both VMware and FVD have the same semantics as QCOW2. Moving to a
previous snapshot does not destroy any of its children. In the example I
gave (copied below),
it goes from
Image: s1->s2->s3->s4->(current-state)
back to snapshot s2, and now the state is
Image: s1->s2->s3->s4
|->(curren-state)
where all snapshots s1-s4 are kept. From there, it can take another
snapshot s5, and then further go back to snapshot s4, ending up with
Image: s1->s2->s3->s4
|->s5 |
|-> (current-state)