• Zach Brown's avatar
    [PATCH] AOP_TRUNCATED_PAGE victims in read_pages() belong in the LRU · 9f1a3cfc
    Zach Brown authored
    AOP_TRUNCATED_PAGE victims in read_pages() belong in the LRU
    
    Nick Piggin rightly pointed out that the introduction of AOP_TRUNCATED_PAGE
    to read_pages() was wrong to leave A_T_P victim pages in the page cache but
    not put them in the LRU.  Failing to do so hid them from the VM.
    
    A_T_P just means that the aop method unlocked the page rather than
    performing IO.  It would be very rare that the page was truncated between
    the unlock and testing A_T_P.  So we leave the pages in the LRU for likely
    reuse soon rather than backing them back out of the page cache.  We do this
    by matching the behaviour before the A_T_P introduction which added pages
    to the LRU regardless of what ->readpage() did.
    
    This doesn't include the unrelated cleanup in Nick's initial fix which
    changed read_pages() to return void to match its only caller's behaviour of
    ignoring errors.
    Signed-off-by: default avatarNick Piggin <nickpiggin@yahoo.com.au>
    Signed-off-by: default avatarZach Brown <zach.brown@oracle.com>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    9f1a3cfc
readahead.c 16.9 KB