On 2024/2/20 15:45, Zhiguo Niu wrote:


On Tue, Feb 20, 2024 at 2:32 PM Chao Yu <c...@kernel.org 
<mailto:c...@kernel.org>> wrote:
 >
 > On 2024/2/20 13:34, Zhiguo Niu wrote:
 > > I think do f2fs_handle_error in __is_bitmap_valid is a good way.
 >
 > Like this?
 >
 > ---
 >   fs/f2fs/checkpoint.c | 28 ++++++++++++++--------------
 >   1 file changed, 14 insertions(+), 14 deletions(-)
 >
 > diff --git a/fs/f2fs/checkpoint.c b/fs/f2fs/checkpoint.c
 > index 87b7c988c8ca..b8a7e83eb4e0 100644
 > --- a/fs/f2fs/checkpoint.c
 > +++ b/fs/f2fs/checkpoint.c
 > @@ -155,21 +155,24 @@ static bool __is_bitmap_valid(struct f2fs_sb_info 
*sbi, block_t blkaddr,
 >                 return exist;
 >
 >         if ((exist && type == DATA_GENERIC_ENHANCE_UPDATE) ||
 > -               (!exist && type == DATA_GENERIC_ENHANCE)) {
 > -               f2fs_err(sbi, "Inconsistent error blkaddr:%u, sit bitmap:%d",
 > -                        blkaddr, exist);
 > -               set_sbi_flag(sbi, SBI_NEED_FSCK);
 > -               dump_stack();
 > -       }
 > -
 > +               (!exist && type == DATA_GENERIC_ENHANCE))
 > +               goto out_err;
 > +       if (!exist && type != DATA_GENERIC_ENHANCE_UPDATE)
 > +               goto out_handle;
 > +       return exist;
 > +out_err:
 > +       f2fs_err(sbi, "Inconsistent error blkaddr:%u, sit bitmap:%d",
 > +                blkaddr, exist);
 > +       set_sbi_flag(sbi, SBI_NEED_FSCK);
 > +       dump_stack();
 > +out_handle:
 > +       f2fs_handle_error(sbi, ERROR_INVALID_BLKADDR);
 >         return exist;
 >   }
 >
 >   static bool __f2fs_is_valid_blkaddr(struct f2fs_sb_info *sbi,
 >                                         block_t blkaddr, int type)
 >   {
 > -       bool valid = false;
 > -
 >         switch (type) {
 >         case META_NAT:
 >                 break;
 > @@ -209,10 +212,7 @@ static bool __f2fs_is_valid_blkaddr(struct f2fs_sb_info 
*sbi,
 >                         dump_stack();
 >                         goto err;
 >                 } else {
 > -                       valid = __is_bitmap_valid(sbi, blkaddr, type);
 > -                       if ((!valid && type != DATA_GENERIC_ENHANCE_UPDATE) 
||
 > -                               (valid && type == 
DATA_GENERIC_ENHANCE_UPDATE))
 > -                               goto err;
 > +                       return __is_bitmap_valid(sbi, blkaddr, type);
 >                 }
 >                 break;
 >         case META_GENERIC:
 > @@ -227,7 +227,7 @@ static bool __f2fs_is_valid_blkaddr(struct f2fs_sb_info 
*sbi,
 >         return true;
 >   err:
 >         f2fs_handle_error(sbi, ERROR_INVALID_BLKADDR);
 > -       return valid;
 > +       return false;
I think it's OK.
Do we need to wait for Jaegeuk Kim’s suggestion or should I update the new 
patch  version first😀?
thanks!

I guess we'd better to wait for Jaegeuk's comments.

Thanks,

 >   }
 >
 >   bool f2fs_is_valid_blkaddr(struct f2fs_sb_info *sbi,
 > --
 > 2.40.1
 >
 >


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

Reply via email to