Peter Xu <peterx@xxxxxxxxxx> writes: > Hi, Alistair, > > On Fri, Aug 12, 2022 at 03:22:30PM +1000, Alistair Popple wrote: >> migrate_vma_setup() has a fast path in migrate_vma_collect_pmd() that >> installs migration entries directly if it can lock the migrating page. >> When removing a dirty pte the dirty bit is supposed to be carried over >> to the underlying page to prevent it being lost. >> >> Currently migrate_vma_*() can only be used for private anonymous >> mappings. That means loss of the dirty bit usually doesn't result in >> data loss because these pages are typically not file-backed. However >> pages may be backed by swap storage which can result in data loss if an >> attempt is made to migrate a dirty page that doesn't yet have the >> PageDirty flag set. >> >> In this case migration will fail due to unexpected references but the >> dirty pte bit will be lost. If the page is subsequently reclaimed data >> won't be written back to swap storage as it is considered uptodate, >> resulting in data loss if the page is subsequently accessed. >> >> Prevent this by copying the dirty bit to the page when removing the pte >> to match what try_to_migrate_one() does. >> >> Signed-off-by: Alistair Popple <apopple@xxxxxxxxxx> >> Reported-by: Peter Xu <peterx@xxxxxxxxxx> > > This line should be: > > Reported-by: Huang Ying <ying.huang@xxxxxxxxx> > > Please also feel free to add: > > Acked-by: Peter Xu <peterx@xxxxxxxxxx> Thanks Peter, my bad. I assume Andrew can fix up the tags if I don't need to re-spin this series. > Thanks,