• Joonsoo Kim's avatar
    mm/rmap: extend rmap_walk_xxx() to cope with different cases · 0dd1c7bb
    Joonsoo Kim authored
    There are a lot of common parts in traversing functions, but there are
    also a little of uncommon parts in it.  By assigning proper function
    pointer on each rmap_walker_control, we can handle these difference
    correctly.
    
    Following are differences we should handle.
    
    1. difference of lock function in anon mapping case
    2. nonlinear handling in file mapping case
    3. prechecked condition:
    	checking memcg in page_referenced(),
    	checking VM_SHARE in page_mkclean()
    	checking temporary vma in try_to_unmap()
    4. exit condition:
    	checking page_mapped() in try_to_unmap()
    
    So, in this patch, I introduce 4 function pointers to handle above
    differences.
    Signed-off-by: default avatarJoonsoo Kim <iamjoonsoo.kim@lge.com>
    Cc: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
    Cc: Mel Gorman <mgorman@suse.de>
    Cc: Hugh Dickins <hughd@google.com>
    Cc: Rik van Riel <riel@redhat.com>
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: Hillf Danton <dhillf@gmail.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    0dd1c7bb
rmap.c 51.1 KB