On Thu, Nov 22, 2018 at 21:48:02 +0300, Andrey Shinkevich wrote: > Hello everyone! > > The given feature discards blocks with copy-on-read operation while the > streaming process runs. Adding the 'discard' argument to the QMP block-stream > command allows dropping a block in the backing chain after it has been copied > to the active layer. That will elude the block duplication in the intermediate > backing file. It saves the disk space while external snapshots are being > merged.
So you specifically want to merge the snapshot by pulling rather than commiting? Do you have any specific reasons for that? I'm curious because I plan to finally finish external snapshots in libvirt. Allowing to pull into intermediate layers will be (or is?) very welcome by libvirt since I plan to do external snapshot deletion/merging and that will be greatly simplified by pulling. On the other hand libvirt will not be able to always use 'discard' as libvirt's API allows creating alternate histories for a VM and in such case when merging a snapshot at a branching point we'll need to pull it into multiple images. The 'discard' optimization can then be used only with the last branch. Libvirt's reasons for using 'block-stream' are mostly as it corresponds to the operations necessary for not messing up the relationship between the snapshot and which files on disk belong to it.
signature.asc
Description: PGP signature