diff options
Diffstat (limited to 'fs/f2fs/segment.c')
-rw-r--r-- | fs/f2fs/segment.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c index 9d4a7ab33b06..902c4c3f6b70 100644 --- a/fs/f2fs/segment.c +++ b/fs/f2fs/segment.c | |||
@@ -203,6 +203,22 @@ retry: | |||
203 | mutex_unlock(&fi->inmem_lock); | 203 | mutex_unlock(&fi->inmem_lock); |
204 | } | 204 | } |
205 | 205 | ||
206 | void invalidate_inmem_page(struct inode *inode, struct page *page) | ||
207 | { | ||
208 | struct f2fs_inode_info *fi = F2FS_I(inode); | ||
209 | struct inmem_pages *cur; | ||
210 | |||
211 | mutex_lock(&fi->inmem_lock); | ||
212 | cur = radix_tree_lookup(&fi->inmem_root, page->index); | ||
213 | if (cur) { | ||
214 | radix_tree_delete(&fi->inmem_root, cur->page->index); | ||
215 | f2fs_put_page(cur->page, 0); | ||
216 | list_del(&cur->list); | ||
217 | kmem_cache_free(inmem_entry_slab, cur); | ||
218 | } | ||
219 | mutex_unlock(&fi->inmem_lock); | ||
220 | } | ||
221 | |||
206 | void commit_inmem_pages(struct inode *inode, bool abort) | 222 | void commit_inmem_pages(struct inode *inode, bool abort) |
207 | { | 223 | { |
208 | struct f2fs_sb_info *sbi = F2FS_I_SB(inode); | 224 | struct f2fs_sb_info *sbi = F2FS_I_SB(inode); |