From: Chao Yu <chao@kernel.org>
To: "zhiguo.niu" <zhiguo.niu@unisoc.com>,
jaegeuk@kernel.org, linux-f2fs-devel@lists.sourceforge.net,
linux-kernel@vger.kernel.org
Cc: xiuhong.wang@unisoc.com, niuzhiguo84@gmail.com
Subject: Re: [f2fs-dev] [PATCH V3] f2fs: fix some error handling case in gc
Date: Tue, 20 Sep 2022 23:29:02 +0800 [thread overview]
Message-ID: <fadeeb4e-2769-a0c9-aee5-612de712aec6@kernel.org> (raw)
In-Reply-To: <1663637258-21987-1-git-send-email-zhiguo.niu@unisoc.com>
On 2022/9/20 9:27, zhiguo.niu wrote:
> During GC, if segment type stored in SSA and SIT is inconsistent,
> we set SBI_NEED_FSCK first and then stop checkpoint, this will
> cause the following issues:
> 1. SBI_NEED_FSCK can not be set to flash truly because of checkpoint
> has been stopped.
> 2. Will cause more EIO error if user use f2fs because of CP_ERROR_FLAG
> has been set in f2fs_stop_checkpoint, this is not reasonable.
>
> So we fix this error handling case by recording current victim segment
> as invalid for gc and do not stop checkpoint.
> 1. SBI_NEED_FSCK will still be set but not do f2fs_stop_checkpoint for
> f2fs.fsck to have opportunity to fix the inconsistent segment type
> in SSA and SIT.
> 2. Let user can still use fs, avoid EIO error for some operations such
> as read and write,etc.
> 3. If current segment has inconsistent segment type in SSA and SIT,
> we add this segment segno in SIT_I(sbi)->invalid_segmap to skip this
> segment to avoid deadloop in gc,similar as commit bbf9f7d90f21 ("f2fs:
> Fix indefinite loop in f2fs_gc()")
>
> Fixes: 793ab1c8a792 ("f2fs: fix to avoid deadloop in foreground GC")
> Signed-off-by: zhiguo.niu <zhiguo.niu@unisoc.com>
> ---
> changes of v3: keep "set SBI_NEED_FSCK and f2fs_err()" as before and
> do not depend on CONFIG_F2FS_CHECK_FS as Chao's suggestion.
> ---
> ---
> fs/f2fs/gc.c | 5 ++++-
> 1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/fs/f2fs/gc.c b/fs/f2fs/gc.c
> index d5fb426e0747..f354883872f6 100644
> --- a/fs/f2fs/gc.c
> +++ b/fs/f2fs/gc.c
> @@ -1703,7 +1703,10 @@ static int do_garbage_collect(struct f2fs_sb_info *sbi,
> f2fs_err(sbi, "Inconsistent segment (%u) type [%d, %d] in SSA and SIT",
> segno, type, GET_SUM_TYPE((&sum->footer)));
> set_sbi_flag(sbi, SBI_NEED_FSCK);
> - f2fs_stop_checkpoint(sbi, false);
f2fs_stop_checkpoint() was added in commit 793ab1c8a792 ("f2fs: fix to avoid
deadloop in foreground GC"), in order to avoid deadlock issue reported in
bugzilla, it needs to check this patch w/ the fuzzed image.
Bug 203211:
https://bugzilla.kernel.org/show_bug.cgi?id=203211
Fuzzed image:
https://bugzilla.kernel.org/attachment.cgi?id=282203
Thanks,
> +#ifdef CONFIG_F2FS_CHECK_FS
> + if (!test_bit(segno, SIT_I(sbi)->invalid_segmap))
> + set_bit(segno, SIT_I(sbi)->invalid_segmap);
> +#endif
> goto skip;
> }
>
_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
prev parent reply other threads:[~2022-09-20 15:29 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-09-20 1:27 [f2fs-dev] [PATCH V3] f2fs: fix some error handling case in gc zhiguo.niu
2022-09-20 15:29 ` Chao Yu [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=fadeeb4e-2769-a0c9-aee5-612de712aec6@kernel.org \
--to=chao@kernel.org \
--cc=jaegeuk@kernel.org \
--cc=linux-f2fs-devel@lists.sourceforge.net \
--cc=linux-kernel@vger.kernel.org \
--cc=niuzhiguo84@gmail.com \
--cc=xiuhong.wang@unisoc.com \
--cc=zhiguo.niu@unisoc.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).