diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-12-01 13:35:19 -0500 |
---|---|---|
committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2010-12-02 09:55:21 -0500 |
commit | 6072d13c429373c5d63b69dadbbef40a9b035552 (patch) | |
tree | a2bf745efaa4092f2a8d7d9a9b160c2a7a3b303f /mm/truncate.c | |
parent | 0aded708d125a3ff7e5abaea9c2d9c6d7ebbfdcd (diff) | |
download | linux-3.10-6072d13c429373c5d63b69dadbbef40a9b035552.tar.gz linux-3.10-6072d13c429373c5d63b69dadbbef40a9b035552.tar.bz2 linux-3.10-6072d13c429373c5d63b69dadbbef40a9b035552.zip |
Call the filesystem back whenever a page is removed from the page cache
NFS needs to be able to release objects that are stored in the page
cache once the page itself is no longer visible from the page cache.
This patch adds a callback to the address space operations that allows
filesystems to perform page cleanups once the page has been removed
from the page cache.
Original patch by: Linus Torvalds <torvalds@linux-foundation.org>
[trondmy: cover the cases of invalidate_inode_pages2() and
truncate_inode_pages()]
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'mm/truncate.c')
-rw-r--r-- | mm/truncate.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/mm/truncate.c b/mm/truncate.c index ba887bff48c..3c2d5ddfa0d 100644 --- a/mm/truncate.c +++ b/mm/truncate.c @@ -390,6 +390,10 @@ invalidate_complete_page2(struct address_space *mapping, struct page *page) __remove_from_page_cache(page); spin_unlock_irq(&mapping->tree_lock); mem_cgroup_uncharge_cache_page(page); + + if (mapping->a_ops->freepage) + mapping->a_ops->freepage(page); + page_cache_release(page); /* pagecache ref */ return 1; failed: |