]> git.baikalelectronics.ru Git - kernel.git/commit
try to reap reiserfs pages left around by invalidatepage
authorChris Mason <chris.mason@oracle.com>
Wed, 17 Oct 2007 06:29:44 +0000 (23:29 -0700)
committerLinus Torvalds <torvalds@woody.linux-foundation.org>
Wed, 17 Oct 2007 15:42:57 +0000 (08:42 -0700)
commit858dadc7b368a254caecba408b5bf99f852e5a2f
treed0c54706f98e8c031453e3bb235ca9be22206fed
parent209972ebc8a8682f8ee0ce9cd252f70a4b8fdadb
try to reap reiserfs pages left around by invalidatepage

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: Chris Mason <chris.mason@oracle.com>
Cc: "Vladimir V. Saveliev" <vs@namesys.com>
Cc: Jeff Mahoney <jeffm@suse.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
fs/reiserfs/journal.c