| From 6da26d60cf8e7e51c1e2bdb390b9e0e689e50e03 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Tue, 22 Jun 2021 12:56:44 -0700 |
| Subject: f2fs: remove false alarm on iget failure during GC |
| |
| From: Jaegeuk Kim <jaegeuk@kernel.org> |
| |
| [ Upstream commit 132e3209789c647e37dc398ef36af4de13f104b4 ] |
| |
| This patch removes setting SBI_NEED_FSCK when GC gets an error on f2fs_iget, |
| since f2fs_iget can give ENOMEM and others by race condition. |
| If we set this critical fsck flag, we'll get EIO during fsync via the below |
| code path. |
| |
| In f2fs_inplace_write_data(), |
| |
| if (is_sbi_flag_set(sbi, SBI_NEED_FSCK) || f2fs_cp_error(sbi)) { |
| err = -EIO; |
| goto drop_bio; |
| } |
| |
| Fixes: 9557727876674 ("f2fs: drop inplace IO if fs status is abnormal") |
| Reviewed-by: Chao Yu <chao@kernel.org> |
| Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| fs/f2fs/gc.c | 4 +--- |
| 1 file changed, 1 insertion(+), 3 deletions(-) |
| |
| diff --git a/fs/f2fs/gc.c b/fs/f2fs/gc.c |
| index b40a2da90147..ab63951c08cb 100644 |
| --- a/fs/f2fs/gc.c |
| +++ b/fs/f2fs/gc.c |
| @@ -1450,10 +1450,8 @@ next_step: |
| |
| if (phase == 3) { |
| inode = f2fs_iget(sb, dni.ino); |
| - if (IS_ERR(inode) || is_bad_inode(inode)) { |
| - set_sbi_flag(sbi, SBI_NEED_FSCK); |
| + if (IS_ERR(inode) || is_bad_inode(inode)) |
| continue; |
| - } |
| |
| if (!down_write_trylock( |
| &F2FS_I(inode)->i_gc_rwsem[WRITE])) { |
| -- |
| 2.30.2 |
| |