Hi! > Oops, you're right, my bad. > > > > > > +++ b/fs/f2fs/gc.c > > > @@ -589,6 +589,9 @@ static bool is_alive(struct f2fs_sb_info > > > set_sbi_flag(sbi, SBI_NEED_FSCK); > > > } > > > + if (f2fs_check_nid_range(sbi, dni->ino)) > > > + return false; > > > + > > > *nofs = ofs_of_node(node_page); > > > source_blkaddr = datablock_addr(NULL, node_page, ofs_in_node); > > > f2fs_put_page(node_page, 1); > > > > AFAICT f2fs_put_page() needs to be done in the error path, too. > > > > (Problem seems to exist in mainline, too). > > > > Something like this? > > Could you please send a formal patch to f2fs mailing list for better review? > > Anyway, thanks a lot for the report and the patch! I'm quite busy with other reviews at the moment. If you could submit a patch, it would be great, otherwise I'll get to it .. sometime. Best regards, Pavel
On 2022/2/2 3:18, Pavel Machek wrote: > Hi! > >> Oops, you're right, my bad. >> >>> >>>> +++ b/fs/f2fs/gc.c >>>> @@ -589,6 +589,9 @@ static bool is_alive(struct f2fs_sb_info >>>> set_sbi_flag(sbi, SBI_NEED_FSCK); >>>> } >>>> + if (f2fs_check_nid_range(sbi, dni->ino)) >>>> + return false; >>>> + >>>> *nofs = ofs_of_node(node_page); >>>> source_blkaddr = datablock_addr(NULL, node_page, ofs_in_node); >>>> f2fs_put_page(node_page, 1); >>> >>> AFAICT f2fs_put_page() needs to be done in the error path, too. >>> >>> (Problem seems to exist in mainline, too). >>> >>> Something like this? >> >> Could you please send a formal patch to f2fs mailing list for better review? >> >> Anyway, thanks a lot for the report and the patch! > > I'm quite busy with other reviews at the moment. If you could submit a > patch, it would be great, otherwise I'll get to it .. sometime. I've submitted a patch, could you please take a look? Thanks, > > Best regards, > Pavel >
--- a/fs/f2fs/gc.c +++ b/fs/f2fs/gc.c @@ -589,6 +589,9 @@ static bool is_alive(struct f2fs_sb_info set_sbi_flag(sbi, SBI_NEED_FSCK); } + if (f2fs_check_nid_range(sbi, dni->ino)) + return false; + *nofs = ofs_of_node(node_page); source_blkaddr = datablock_addr(NULL, node_page, ofs_in_node); f2fs_put_page(node_page, 1);