aboutsummaryrefslogtreecommitdiffstats
path: root/fs/f2fs/inode.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/f2fs/inode.c')
-rw-r--r--fs/f2fs/inode.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/fs/f2fs/inode.c b/fs/f2fs/inode.c
index 2adeff26be11..cb269c46ac25 100644
--- a/fs/f2fs/inode.c
+++ b/fs/f2fs/inode.c
@@ -83,7 +83,7 @@ static void __recover_inline_status(struct inode *inode, struct page *ipage)
83 83
84 while (start < end) { 84 while (start < end) {
85 if (*start++) { 85 if (*start++) {
86 f2fs_wait_on_page_writeback(ipage, NODE); 86 f2fs_wait_on_page_writeback(ipage, NODE, true);
87 87
88 set_inode_flag(F2FS_I(inode), FI_DATA_EXIST); 88 set_inode_flag(F2FS_I(inode), FI_DATA_EXIST);
89 set_raw_inline(F2FS_I(inode), F2FS_INODE(ipage)); 89 set_raw_inline(F2FS_I(inode), F2FS_INODE(ipage));
@@ -227,7 +227,7 @@ int update_inode(struct inode *inode, struct page *node_page)
227{ 227{
228 struct f2fs_inode *ri; 228 struct f2fs_inode *ri;
229 229
230 f2fs_wait_on_page_writeback(node_page, NODE); 230 f2fs_wait_on_page_writeback(node_page, NODE, true);
231 231
232 ri = F2FS_INODE(node_page); 232 ri = F2FS_INODE(node_page);
233 233
@@ -263,6 +263,10 @@ int update_inode(struct inode *inode, struct page *node_page)
263 set_cold_node(inode, node_page); 263 set_cold_node(inode, node_page);
264 clear_inode_flag(F2FS_I(inode), FI_DIRTY_INODE); 264 clear_inode_flag(F2FS_I(inode), FI_DIRTY_INODE);
265 265
266 /* deleted inode */
267 if (inode->i_nlink == 0)
268 clear_inline_node(node_page);
269
266 return set_page_dirty(node_page); 270 return set_page_dirty(node_page);
267} 271}
268 272
@@ -320,7 +324,7 @@ void f2fs_evict_inode(struct inode *inode)
320 324
321 /* some remained atomic pages should discarded */ 325 /* some remained atomic pages should discarded */
322 if (f2fs_is_atomic_file(inode)) 326 if (f2fs_is_atomic_file(inode))
323 commit_inmem_pages(inode, true); 327 drop_inmem_pages(inode);
324 328
325 trace_f2fs_evict_inode(inode); 329 trace_f2fs_evict_inode(inode);
326 truncate_inode_pages_final(&inode->i_data); 330 truncate_inode_pages_final(&inode->i_data);
@@ -385,10 +389,7 @@ no_delete:
385 } 389 }
386 } 390 }
387out_clear: 391out_clear:
388#ifdef CONFIG_F2FS_FS_ENCRYPTION 392 fscrypt_put_encryption_info(inode, NULL);
389 if (fi->i_crypt_info)
390 f2fs_free_encryption_info(inode, fi->i_crypt_info);
391#endif
392 clear_inode(inode); 393 clear_inode(inode);
393} 394}
394 395