aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation/filesystems/vfs.txt
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2010-12-01 13:35:19 -0500
committerTrond Myklebust <Trond.Myklebust@netapp.com>2010-12-02 09:55:21 -0500
commit6072d13c429373c5d63b69dadbbef40a9b035552 (patch)
treea2bf745efaa4092f2a8d7d9a9b160c2a7a3b303f /Documentation/filesystems/vfs.txt
parent0aded708d125a3ff7e5abaea9c2d9c6d7ebbfdcd (diff)
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 'Documentation/filesystems/vfs.txt')
-rw-r--r--Documentation/filesystems/vfs.txt7
1 files changed, 7 insertions, 0 deletions
diff --git a/Documentation/filesystems/vfs.txt b/Documentation/filesystems/vfs.txt
index ed7e5efc06d..3b14a557eca 100644
--- a/Documentation/filesystems/vfs.txt
+++ b/Documentation/filesystems/vfs.txt
@@ -534,6 +534,7 @@ struct address_space_operations {
534 sector_t (*bmap)(struct address_space *, sector_t); 534 sector_t (*bmap)(struct address_space *, sector_t);
535 int (*invalidatepage) (struct page *, unsigned long); 535 int (*invalidatepage) (struct page *, unsigned long);
536 int (*releasepage) (struct page *, int); 536 int (*releasepage) (struct page *, int);
537 void (*freepage)(struct page *);
537 ssize_t (*direct_IO)(int, struct kiocb *, const struct iovec *iov, 538 ssize_t (*direct_IO)(int, struct kiocb *, const struct iovec *iov,
538 loff_t offset, unsigned long nr_segs); 539 loff_t offset, unsigned long nr_segs);
539 struct page* (*get_xip_page)(struct address_space *, sector_t, 540 struct page* (*get_xip_page)(struct address_space *, sector_t,
@@ -679,6 +680,12 @@ struct address_space_operations {
679 need to ensure this. Possibly it can clear the PageUptodate 680 need to ensure this. Possibly it can clear the PageUptodate
680 bit if it cannot free private data yet. 681 bit if it cannot free private data yet.
681 682
683 freepage: freepage is called once the page is no longer visible in
684 the page cache in order to allow the cleanup of any private
685 data. Since it may be called by the memory reclaimer, it
686 should not assume that the original address_space mapping still
687 exists, and it should not block.
688
682 direct_IO: called by the generic read/write routines to perform 689 direct_IO: called by the generic read/write routines to perform
683 direct_IO - that is IO requests which bypass the page cache 690 direct_IO - that is IO requests which bypass the page cache
684 and transfer data directly between the storage and the 691 and transfer data directly between the storage and the