On Sat, Feb 20, 2021 at 02:59:42AM -0500, David Hildenbrand wrote:
Live snapshotting ends up reading all guest memory (dirty bitmap starts with
all 1s), which is not what we want for virtio-mem - we don’t want to read and
migrate memory that has been discarded and has no stable content.
For ordinary migration we use the guest page hint API to clear bits in the
dirty bitmap after dirty bitmap sync. Well, if we don‘t do bitmap syncs we‘ll
never clear any dirty bits. That‘s the problem.
Using dirty bitmap for that information is less efficient, becase it's
definitely a larger granularity information than PAGE_SIZE. If the disgarded
ranges are always continuous and at the end of a memory region, we should have
some parameter in the ramblock showing that where we got shrinked then we don't
check dirty bitmap at all, rather than always assuming used_length is the one.