• Hugh Dickins's avatar
    swapin: fix valid_swaphandles defect · 8952898b
    Hugh Dickins authored
    valid_swaphandles is supposed to do a quick pass over the swap map entries
    neigbouring the entry which swapin_readahead is targetting, to determine for
    it a range worth reading all together.  But since it always starts its search
    from the beginning of the swap "cluster", a reject (free entry) there
    immediately curtails the readaround, and every swapin_readahead from that
    cluster is for just a single page.  Instead scan forwards and backwards around
    the target entry.
    
    Use better names for some variables: a swap_info pointer is usually called
    "si" not "swapdev".  And at the end, if only the target page should be read,
    return count of 0 to disable readaround, to avoid the unnecessarily repeated
    call to read_swap_cache_async.
    Signed-off-by: default avatarHugh Dickins <hugh@veritas.com>
    Acked-by: default avatarRik van Riel <riel@surriel.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    8952898b
swapfile.c 44.4 KB