diff options
Diffstat (limited to 'fs/cifs/fscache.c')
-rw-r--r-- | fs/cifs/fscache.c | 26 |
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 | |||
128 | int 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 | |||
143 | void __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 | |||