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


Groups > linux.kernel > #1513814

[PATCH] f2fs: update inode updating status correctly

From Chao Yu <yuchao0@huawei.com>
Newsgroups linux.kernel
Subject [PATCH] f2fs: update inode updating status correctly
Date 2016-11-02 13:10 +0100
Message-ID <sz2wF-64S-1@gated-at.bofh.it> (permalink)
Organization linux.* mail to news gateway

Show all headers | View raw


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

Back to linux.kernel | Previous | Next | Find similar | Unroll thread


Thread

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

csiph-web