Skip to content
  • Hugh Dickins's avatar
    mm: swapoff: remove too limiting SWAP_UNUSE_MAX_TRIES · dd862deb
    Hugh Dickins authored
    SWAP_UNUSE_MAX_TRIES 3 appeared to work well in earlier testing, but
    further testing has proved it to be a source of unnecessary swapoff
    EBUSY failures (which can then be followed by unmount EBUSY failures).
    
    When mmget_not_zero() or shmem's igrab() fails, there is an mm exiting
    or inode being evicted, freeing up swap independent of try_to_unuse().
    Those typically completed much sooner than the old quadratic swapoff,
    but now it's more common that swapoff may need to wait for them.
    
    It's possible to move those cases from init_mm.mmlist and shmem_swaplist
    to separate "exiting" swaplists, and try_to_unuse() then wait for those
    lists to be emptied; but we've not bothered with that in the past, and
    don't want to risk missing some other forgotten case.  So just revert to
    cycling around until the swap is gone, without any retries limit.
    
    Link: http://lkml.kernel.org/r/alpine.LSU.2.11.1904081256170.1523@eggly.anvils
    Fixes: b56a2d8a
    
     ("mm: rid swapoff of quadratic complexity")
    Signed-off-by: default avatarHugh Dickins <hughd@google.com>
    Cc: "Alex Xu (Hello71)" <alex_y_xu@yahoo.ca>
    Cc: Huang Ying <ying.huang@intel.com>
    Cc: Kelley Nielsen <kelleynnn@gmail.com>
    Cc: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
    Cc: Rik van Riel <riel@surriel.com>
    Cc: Vineeth Pillai <vpillai@digitalocean.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    dd862deb