• Huang Ying's avatar
    mm/swapfile.c: put_swap_page: share more between huge/normal code path · c2343d27
    Huang Ying authored
    In this patch, locking related code is shared between huge/normal code
    path in put_swap_page() to reduce code duplication. The `free_entries == 0`
    case is merged into the more general `free_entries != SWAPFILE_CLUSTER`
    case, because the new locking method makes it easy.
    
    The added lines is same as the removed lines.  But the code size is
    increased when CONFIG_TRANSPARENT_HUGEPAGE=n.
    
    		text	   data	    bss	    dec	    hex	filename
    base:	       24123	   2004	    340	  26467	   6763	mm/swapfile.o
    unified:       24485	   2004	    340	  26829	   68cd	mm/swapfile.o
    
    Dig on step deeper with `size -A mm/swapfile.o` for base and unified
    kernel and compare the result, yields,
    
      -.text                                17723      0
      +.text                                17835      0
      -.orc_unwind_ip                        1380      0
      +.orc_unwind_ip                        1480      0
      -.orc_unwind                           2070      0
      +.orc_unwind                           2220      0
      -Total                                26686
      +Total                                27048
    
    The total difference is the same.  The text segment difference is much
    smaller: 112.  More difference comes from the ORC unwinder segments:
    (1480 + 2220) - (1380 + 2070) = 250.  If the frame pointer unwinder is
    used, this costs nothing.
    
    Link: http://lkml.kernel.org/r/20180720071845.17920-9-ying.huang@intel.comSigned-off-by: default avatar"Huang, Ying" <ying.huang@intel.com>
    Reviewed-by: default avatarDaniel Jordan <daniel.m.jordan@oracle.com>
    Acked-by: default avatarDave Hansen <dave.hansen@linux.intel.com>
    Cc: Michal Hocko <mhocko@suse.com>
    Cc: Johannes Weiner <hannes@cmpxchg.org>
    Cc: Shaohua Li <shli@kernel.org>
    Cc: Hugh Dickins <hughd@google.com>
    Cc: Minchan Kim <minchan@kernel.org>
    Cc: Rik van Riel <riel@redhat.com>
    Cc: Dan Williams <dan.j.williams@intel.com>
    Cc: Matthew Wilcox <willy@infradead.org>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    c2343d27
swapfile.c 95.7 KB