On 4/24/25 00:15, Dmitry Antipov wrote:
> In 'f2fs_write_end_io()', end all of the in-progress writes with
> -EFSCORRUPTED if the corresponding error was detected earlier.

I guess we need to figure out why f2fs_bug_on() will be tiggerred?

f2fs_write_end_io()
{
...
                f2fs_bug_on(sbi, folio->mapping == NODE_MAPPING(sbi) &&
                                folio->index != nid_of_node(&folio->page));

Thanks,

> 
> Reported-by: syzbot+803dd716c4310d16f...@syzkaller.appspotmail.com
> Closes: https://syzkaller.appspot.com/bug?extid=803dd716c4310d16ff3a
> Signed-off-by: Dmitry Antipov <dmanti...@yandex.ru>
> ---
>  fs/f2fs/data.c | 7 +++++++
>  1 file changed, 7 insertions(+)
> 
> diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c
> index 54f89f0ee69b..755806868f0e 100644
> --- a/fs/f2fs/data.c
> +++ b/fs/f2fs/data.c
> @@ -320,9 +320,11 @@ static void f2fs_write_end_io(struct bio *bio)
>  {
>       struct f2fs_sb_info *sbi;
>       struct folio_iter fi;
> +     bool check;
>  
>       iostat_update_and_unbind_ctx(bio);
>       sbi = bio->bi_private;
> +     check = is_sbi_flag_set(sbi, SBI_NEED_FSCK);
>  
>       if (time_to_inject(sbi, FAULT_WRITE_IO))
>               bio->bi_status = BLK_STS_IOERR;
> @@ -331,6 +333,11 @@ static void f2fs_write_end_io(struct bio *bio)
>               struct folio *folio = fi.folio;
>               enum count_type type;
>  
> +             if (check) {
> +                     mapping_set_error(folio->mapping, -EFSCORRUPTED);
> +                     continue;
> +             }
> +
>               if (fscrypt_is_bounce_folio(folio)) {
>                       struct folio *io_folio = folio;
>  



_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

Reply via email to