The loop reason is DIRTY IMETA always equal to 1:
Thread A:
-write_checkpoint
-block_operations
-f2fs_sync_inode_meta
-igrab <--- here igrab return NULL
Thread B:
-f2fs_evict_inode
-remove_inode_page
-truncate_xattr_node
-__get_node_page
-read_node_page <---- here return -ENOENT
This patch walk around this cause.
Signed-off-by: Yunlei He <[email protected]>
---
fs/f2fs/node.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/fs/f2fs/node.c b/fs/f2fs/node.c
index 2654c91..ec7a0e0 100644
--- a/fs/f2fs/node.c
+++ b/fs/f2fs/node.c
@@ -973,8 +973,9 @@ int truncate_xattr_node(struct inode *inode, struct page
*page)
return 0;
npage = get_node_page(sbi, nid);
- if (IS_ERR(npage))
+ if (IS_ERR(npage) && PTR_ERR(npage) != -ENOENT) {
return PTR_ERR(npage);
+ }
f2fs_i_xnid_write(inode, 0);
--
1.9.1
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Linux-f2fs-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel