aboutsummaryrefslogtreecommitdiffstats
path: root/fs/cifs/fscache.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/cifs/fscache.c')
-rw-r--r--fs/cifs/fscache.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/fs/cifs/fscache.c b/fs/cifs/fscache.c
index 6c8d96758ddb..5dd935280049 100644
--- a/fs/cifs/fscache.c
+++ b/fs/cifs/fscache.c
@@ -124,3 +124,29 @@ void cifs_fscache_reset_inode_cookie(struct inode *inode)
124 cifsi->fscache, old); 124 cifsi->fscache, old);
125 } 125 }
126} 126}
127
128int cifs_fscache_release_page(struct page *page, gfp_t gfp)
129{
130 if (PageFsCache(page)) {
131 struct inode *inode = page->mapping->host;
132 struct cifsInodeInfo *cifsi = CIFS_I(inode);
133
134 cFYI(1, "CIFS: fscache release page (0x%p/0x%p)",
135 page, cifsi->fscache);
136 if (!fscache_maybe_release_page(cifsi->fscache, page, gfp))
137 return 0;
138 }
139
140 return 1;
141}
142
143void __cifs_fscache_invalidate_page(struct page *page, struct inode *inode)
144{
145 struct cifsInodeInfo *cifsi = CIFS_I(inode);
146 struct fscache_cookie *cookie = cifsi->fscache;
147
148 cFYI(1, "CIFS: fscache invalidatepage (0x%p/0x%p)", page, cookie);
149 fscache_wait_on_page_write(cookie, page);
150 fscache_uncache_page(cookie, page);
151}
152