f2fs: retry to truncate blocks in -ENOMEM case
authorJaegeuk Kim <jaegeuk@kernel.org>
Tue, 3 May 2016 16:22:18 +0000 (09:22 -0700)
committerJaegeuk Kim <jaegeuk@kernel.org>
Sat, 7 May 2016 17:32:26 +0000 (10:32 -0700)
This patch modifies to retry truncating node blocks in -ENOMEM case.

Signed-off-by: Hou Pengyang <houpengyang@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fs/f2fs/inode.c

index f4ac8512b7ba687515b3b06d0a306afa1dcdabf6..baf3a2a1f2490a4656590998ea3c9004e42171c6 100644 (file)
@@ -344,7 +344,7 @@ void f2fs_evict_inode(struct inode *inode)
        sb_start_intwrite(inode->i_sb);
        set_inode_flag(fi, FI_NO_ALLOC);
        i_size_write(inode, 0);
-
+retry:
        if (F2FS_HAS_BLOCKS(inode))
                err = f2fs_truncate(inode, true);
 
@@ -354,6 +354,12 @@ void f2fs_evict_inode(struct inode *inode)
                f2fs_unlock_op(sbi);
        }
 
+       /* give more chances, if ENOMEM case */
+       if (err == -ENOMEM) {
+               err = 0;
+               goto retry;
+       }
+
        sb_end_intwrite(inode->i_sb);
 no_delete:
        stat_dec_inline_xattr(inode);