Messages in this thread Patch in this message | ![/](/images/icornerl.gif) | | Date | Tue, 20 Feb 2024 10:36:34 +0800 | Subject | Re: [f2fs-dev] [PATCH v7] f2fs: unify the error handling of f2fs_is_valid_blkaddr | From | Chao Yu <> |
| |
On 2024/2/19 22:36, Chao Yu wrote: >>>> Please think about how to optimize this, which is really ugly now --- fs/f2fs/checkpoint.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/fs/f2fs/checkpoint.c b/fs/f2fs/checkpoint.c index 87b7c988c8ca..089c26b80be3 100644 --- a/fs/f2fs/checkpoint.c +++ b/fs/f2fs/checkpoint.c @@ -135,7 +135,7 @@ struct page *f2fs_get_tmp_page(struct f2fs_sb_info *sbi, pgoff_t index) }
static bool __is_bitmap_valid(struct f2fs_sb_info *sbi, block_t blkaddr, - int type) + int type, bool *record_error) { struct seg_entry *se; unsigned int segno, offset; @@ -160,6 +160,7 @@ static bool __is_bitmap_valid(struct f2fs_sb_info *sbi, block_t blkaddr, blkaddr, exist); set_sbi_flag(sbi, SBI_NEED_FSCK); dump_stack(); + *record_error = true; }
return exist; @@ -209,10 +210,13 @@ 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)) + bool record_error = false; + + valid = __is_bitmap_valid(sbi, blkaddr, type, + &record_error); + if (!valid || record_error) goto err; + return valid; } break; case META_GENERIC: -- 2.40.1
| ![\](/images/icornerr.gif) |