Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1513814 > unrolled thread

[PATCH] f2fs: update inode updating status correctly

Started byChao Yu <yuchao0@huawei.com>
First post2016-11-02 13:10 +0100
Last post2016-11-02 13:10 +0100
Articles 1 — 1 participant

Back to article view | Back to linux.kernel


Contents

  [PATCH] f2fs: update inode updating status correctly Chao Yu <yuchao0@huawei.com> - 2016-11-02 13:10 +0100

#1513814 — [PATCH] f2fs: update inode updating status correctly

FromChao Yu <yuchao0@huawei.com>
Date2016-11-02 13:10 +0100
Subject[PATCH] f2fs: update inode updating status correctly
Message-ID<sz2wF-64S-1@gated-at.bofh.it>
We should record updating status of inode only for living inode, for those
unlinked inode it needs to clear ino cache, otherwise after the ino of
unlinked inode was been reused, it will cause unneeded node page writing
during ->fsync.

Signed-off-by: Chao Yu <yuchao0@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..36f8a9b 100644
--- a/fs/f2fs/inode.c
+++ b/fs/f2fs/inode.c
@@ -409,10 +409,15 @@ 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);
+	} else {
+		remove_ino_entry(sbi, inode->i_ino, APPEND_INO);
+		remove_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

[toc] | [standalone]


Back to top | Article view | linux.kernel


csiph-web