> Am 11.02.2021 um 22:05 schrieb Peter Xu <pet...@redhat.com>: > > On Thu, Feb 11, 2021 at 09:44:07PM +0100, David Hildenbrand wrote: >> Let‘s take a look at init-on-free. >> >> The guest zeroes a page and puts it onto a buddy freelist. Free page >> reporting code takes it off that list and reports it to the hypervisor. The >> hypervisor discards the physical page and tells the guest he‘s done >> processing the page. The guest re-places the page onto the free page list. >> >> From that point on, the page can be re-allocated inside the guest and is >> assumed to be zero. On access, a fresh (zeroed) page is populated by the >> hypervisor. The guest won‘t re-zero the page, as it has the guarantee (from >> free page reporting) that the page remained zero. >> >> Write-protecting the unpopulated page won‘t work as discussed. > > IMHO no matter if it's init_on_alloc or init_on_free or both, as long as it's > inited in some way then it means the guest OS wrote to it. Then wr-protect > will work..
The issue is when the discard happened before starting the snapshot. Write-protection won‘t work and the zeroed content won‘t be retained in the snapshot. > > MADV_DONTNEED during live snapshot seems to be a separate topic as you > mentioned in the other thread. For that, I agree we'd better simply let > virtio_balloon_inhibited() to return true for live snapshot too just like > postcopy. Yes, but other issue. > > Thanks, > > -- > Peter Xu >