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 <heyun...@huawei.com> --- 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 Linux-f2fs-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel