• Chris Mason's avatar
    try to reap reiserfs pages left around by invalidatepage · 398c95bd
    Chris Mason authored
    reiserfs_invalidatepage will refuse to free pages if they have been logged
    in data=journal mode, or were pinned down by a data=ordered operation.  For
    data=journal, this is fairly easy to trigger just with fsx-linux, and it
    results in a large number of pages hanging around on the LRUs with
    page->mapping == NULL.
    
    Calling try_to_free_buffers when reiserfs decides it is done with the page
    allows it to be freed earlier, and with much less VM thrashing.  Lock
    ordering rules mean that reiserfs can't call lock_page when it is releasing
    the buffers, so TestSetPageLocked is used instead.  Contention on these
    pages should be rare, so it should be sufficient most of the time.
    Signed-off-by: default avatarChris Mason <chris.mason@oracle.com>
    Cc: "Vladimir V. Saveliev" <vs@namesys.com>
    Cc: Jeff Mahoney <jeffm@suse.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    398c95bd
journal.c 124 KB