Skip to content
  • Huang Ying's avatar
    mm, THP, swap: support to reclaim swap space for THP swapped out · e0709829
    Huang Ying authored
    The normal swap slot reclaiming can be done when the swap count reaches
    SWAP_HAS_CACHE.  But for the swap slot which is backing a THP, all swap
    slots backing one THP must be reclaimed together, because the swap slot
    may be used again when the THP is swapped out again later.  So the swap
    slots backing one THP can be reclaimed together when the swap count for
    all swap slots for the THP reached SWAP_HAS_CACHE.  In the patch, the
    functions to check whether the swap count for all swap slots backing one
    THP reached SWAP_HAS_CACHE are implemented and used when checking
    whether a swap slot can be reclaimed.
    
    To make it easier to determine whether a swap slot is backing a THP, a
    new swap cluster flag named CLUSTER_FLAG_HUGE is added to mark a swap
    cluster which is backing a THP (Transparent Huge Page).  Because THP
    swap in as a whole isn't supported now.  After deleting the THP from the
    swap cache (for example, swapping out finished), the CLUSTER_FLAG_HUGE
    flag will be cleared.  So that, the normal pages inside THP can be
    swapped in individually.
    
    [ying.huang@intel.com: fix swap_page_trans_huge_swapped on HDD]
      Link: http://lkml.kernel.org/r/874ltsm0bi.fsf@yhuang-dev.intel.com
    Link: http://lkml.kernel.org/r/20170724051840.2309-3-ying.huang@intel.com
    
    
    Signed-off-by: default avatar"Huang, Ying" <ying.huang@intel.com>
    Acked-by: default avatarRik van Riel <riel@redhat.com>
    Cc: Johannes Weiner <hannes@cmpxchg.org>
    Cc: Minchan Kim <minchan@kernel.org>
    Cc: Hugh Dickins <hughd@google.com>
    Cc: Shaohua Li <shli@kernel.org>
    Cc: "Kirill A . Shutemov" <kirill.shutemov@linux.intel.com>
    Cc: Andrea Arcangeli <aarcange@redhat.com>
    Cc: Dan Williams <dan.j.williams@intel.com>
    Cc: Jens Axboe <axboe@kernel.dk>
    Cc: Michal Hocko <mhocko@kernel.org>
    Cc: Ross Zwisler <ross.zwisler@intel.com> [for brd.c, zram_drv.c, pmem.c]
    Cc: Vishal L Verma <vishal.l.verma@intel.com>
    Cc: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    e0709829