On Tue, Jan 15, 2019 at 10:10:28PM +0100, Christoph Hellwig wrote: > migrate_page_move_mapping() expects pages with private data set to have > a page_count elevated by 1. This is what used to happen for xfs through > the buffer_heads code before the switch to iomap in commit 82cb14175e7d > ("xfs: add support for sub-pagesize writeback without buffer_heads"). > Not having the count elevated causes move_pages() to fail on memory > mapped files coming from xfs. > > Make iomap compatible with the migrate_page_move_mapping() assumption by > elevating the page count as part of iomap_page_create() and lowering it > in iomap_page_release(). > > It causes the move_pages() syscall to misbehave on memory mapped files > from xfs. It does not not move any pages, which I suppose is "just" a > perf issue, but it also ends up returning a positive number which is out > of spec for the syscall. Talking to Michal Hocko, it sounds like > returning positive numbers might be a necessary update to move_pages() > anyway though. > > Based on an earlier patch and changelog from Piotr Jaroszynski, except > that this version actually puts/gets the page aswell when migrating > pages using a copy, and thus actually survives xfstests. > > Fixes: 82cb14175e7d ("xfs: add support for sub-pagesize writeback without buffer_heads") > Cc: Piotr Jaroszynski <pjaroszynski@xxxxxxxxxx> Missing a SOB. But apart from that, I've been running an identical patch in my test tree, so: Reviewed-by: Dave Chinner <dchinner@xxxxxxxxxx> -- Dave Chinner david@xxxxxxxxxxxxx