Hi 王矛, On 2020/2/16 19:39, 王矛 wrote: > *So the problem is:* > > 1. in new_curseg(), if the segno allocated is invalid(no free segment, max > segno > is returned). > > F2fs should do something to indicate this exception. > > 2. otherwise, we may hit the f2fs panic(se invalid). > > Maybe we should do sanity check in update_sit_entry() to see if segno is > really > out of range and caused this panic.
I'm afraid it's too late to handle such error in update_sit_entry(), since we expect all procedures in do_write_page() will be successful, it's a little hard to handle such error in that context. So the problem here is why we can not find any free segments w/ LFS allocation, because in case of lack of free segments (check via has_not_enough_free_secs()), f2fs will force to trigger f2fs_gc() to recycle free sections. I doubt there may be some corner case we haven't considered, result all free segments (including reserved free segments) was exhausted by data/node writes when last checkpoint is triggered during umount. If this issue can be reproduced (during umount, free_segments() < reserved_segments()), we can add some logs to see why f2fs_balance_fs() fail to recycle enough free segments previously. Thanks, > > > Thanks, > Mao > > > > > _______________________________________________ Linux-f2fs-devel mailing list Linux-f2fs-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel