• Dave Hansen's avatar
    pagewalk: only split huge pages when necessary · 03319327
    Dave Hansen authored
    
    
    Right now, if a mm_walk has either ->pte_entry or ->pmd_entry set, it will
    unconditionally split any transparent huge pages it runs in to.  In
    practice, that means that anyone doing a
    
    	cat /proc/$pid/smaps
    
    will unconditionally break down every huge page in the process and depend
    on khugepaged to re-collapse it later.  This is fairly suboptimal.
    
    This patch changes that behavior.  It teaches each ->pmd_entry handler
    (there are five) that they must break down the THPs themselves.  Also, the
    _generic_ code will never break down a THP unless a ->pte_entry handler is
    actually set.
    
    This means that the ->pmd_entry handlers can now choose to deal with THPs
    without breaking them down.
    
    [akpm@linux-foundation.org: coding-style fixes]
    Signed-off-by: default avatarDave Hansen <dave@linux.vnet.ibm.com>
    Acked-by: default avatarMel Gorman <mel@csn.ul.ie>
    Acked-by: default avatarDavid Rientjes <rientjes@google.com>
    Reviewed-by: default avatarEric B Munson <emunson@mgebm.net>
    Tested-by: default avatarEric B Munson <emunson@mgebm.net>
    Cc: Mic...
    03319327
pagewalk.c 4.98 KB