• Hugh Dickins's avatar
    mm/migrate: __unmap_and_move() push good newpage to LRU · c3096e67
    Hugh Dickins authored
    Compaction, NUMA page movement, THP collapse/split, and memory failure
    do isolate unevictable pages from their "LRU", losing the record of
    mlock_count in doing so (isolators are likely to use page->lru for their
    own private lists, so mlock_count has to be presumed lost).
    
    That's unfortunate, and we should put in some work to correct that: one
    can imagine a function to build up the mlock_count again - but it would
    require i_mmap_rwsem for read, so be careful where it's called.  Or
    page_referenced_one() and try_to_unmap_one() might do that extra work.
    
    But one place that can very easily be improved is page migration's
    __unmap_and_move(): a small adjustment to where the successful new page
    is put back on LRU, and its mlock_count (if any) is built back up by
    remove_migration_ptes().
    Signed-off-by: default avatarHugh Dickins <hughd@google.com>
    Acked-by: default avatarVlastimil Babka <vbabka@suse.cz>
    Signed-off-by: default avatarMatthew Wilcox (Oracle) <willy@infradead.org>
    c3096e67
migrate.c 87.9 KB