We should record updating status of inode only for living inode, for those
unlinked inode it needs to clear its ino cache, otherwise after the ino
was been reused, it will cause unneeded node page writing during ->fsync.

Signed-off-by: Chao Yu <yuch...@huawei.com>
---
 fs/f2fs/inode.c | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/fs/f2fs/inode.c b/fs/f2fs/inode.c
index 7b5e402..af06bda 100644
--- a/fs/f2fs/inode.c
+++ b/fs/f2fs/inode.c
@@ -377,6 +377,9 @@ void f2fs_evict_inode(struct inode *inode)
                goto no_delete;
 #endif
 
+       remove_ino_entry(sbi, inode->i_ino, APPEND_INO);
+       remove_ino_entry(sbi, inode->i_ino, UPDATE_INO);
+
        sb_start_intwrite(inode->i_sb);
        set_inode_flag(inode, FI_NO_ALLOC);
        i_size_write(inode, 0);
@@ -409,10 +412,12 @@ void f2fs_evict_inode(struct inode *inode)
        invalidate_mapping_pages(NODE_MAPPING(sbi), inode->i_ino, inode->i_ino);
        if (xnid)
                invalidate_mapping_pages(NODE_MAPPING(sbi), xnid, xnid);
-       if (is_inode_flag_set(inode, FI_APPEND_WRITE))
-               add_ino_entry(sbi, inode->i_ino, APPEND_INO);
-       if (is_inode_flag_set(inode, FI_UPDATE_WRITE))
-               add_ino_entry(sbi, inode->i_ino, UPDATE_INO);
+       if (inode->i_nlink) {
+               if (is_inode_flag_set(inode, FI_APPEND_WRITE))
+                       add_ino_entry(sbi, inode->i_ino, APPEND_INO);
+               if (is_inode_flag_set(inode, FI_UPDATE_WRITE))
+                       add_ino_entry(sbi, inode->i_ino, UPDATE_INO);
+       }
        if (is_inode_flag_set(inode, FI_FREE_NID)) {
                alloc_nid_failed(sbi, inode->i_ino);
                clear_inode_flag(inode, FI_FREE_NID);
-- 
2.8.2.311.gee88674


------------------------------------------------------------------------------
Developer Access Program for Intel Xeon Phi Processors
Access to Intel Xeon Phi processor-based developer platforms.
With one year of Intel Parallel Studio XE.
Training and support from Colfax.
Order your platform today. http://sdm.link/xeonphi
_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

Reply via email to