lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <9e5b9c8b-e8a5-c1ec-d2ed-a068afb03b4a@kernel.org>
Date:   Sun, 18 Sep 2022 18:45:57 +0800
From:   Chao Yu <chao@...nel.org>
To:     "zhiguo.niu" <zhiguo.niu@...soc.com>, jaegeuk@...nel.org,
        linux-f2fs-devel@...ts.sourceforge.net,
        linux-kernel@...r.kernel.org
Cc:     lvqiang.huang@...soc.com
Subject: Re: [PATCH Vx 1/1] f2fs: fix some error handling case in gc

On 2022/9/15 14:18, 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 because of CP_ERROR_FLAG is 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.
> 
> Signed-off-by: zhiguo.niu <zhiguo.niu@...soc.com>
> ---
>   fs/f2fs/gc.c | 11 +++++++----
>   1 file changed, 7 insertions(+), 4 deletions(-)
> 
> diff --git a/fs/f2fs/gc.c b/fs/f2fs/gc.c
> index d5fb426e0747..66bdf2678b5e 100644
> --- a/fs/f2fs/gc.c
> +++ b/fs/f2fs/gc.c
> @@ -1700,10 +1700,13 @@ static int do_garbage_collect(struct f2fs_sb_info *sbi,
> 
>                  sum = page_address(sum_page);
>                  if (type != GET_SUM_TYPE((&sum->footer))) {
> -                       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);
> +#ifdef CONFIG_F2FS_CHECK_FS
> +                       if (!test_and_set_bit(segno, SIT_I(sbi)->invalid_segmap)) {
> +                               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);
> +                       }
> +#endif

What about:

f2fs_err(sbi, "...");
set_sbi_flag(sbi, SBI_NEED_FSCK);

#ifdef CONFIG_F2FS_CHECK_FS
if (test_bit())
	set_bit();
#endif

>                          goto skip;
>                  }
> 
> --
> 2.17.1

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ