NAT bits are saved at spare space in CP pack. Flushed NAT bits may be overwritten by the CP pack if there is no enough space for NAT bits. And NAT bits will be obsolesced at next mount time if crc|cp_ver not matched. So just skip to flush NAT bits in such needless cases.
Signed-off-by: Weichao Guo <guoweic...@huawei.com> --- fs/f2fs/checkpoint.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/fs/f2fs/checkpoint.c b/fs/f2fs/checkpoint.c index 0eaafb8..bdc03c9 100644 --- a/fs/f2fs/checkpoint.c +++ b/fs/f2fs/checkpoint.c @@ -1248,7 +1248,9 @@ static int do_checkpoint(struct f2fs_sb_info *sbi, struct cp_control *cpc) start_blk = __start_cp_next_addr(sbi); /* write nat bits */ - if (enabled_nat_bits(sbi, cpc)) { + if (enabled_nat_bits(sbi, cpc) && + le32_to_cpu(ckpt->cp_pack_total_block_count) <= + sbi->blocks_per_seg - NM_I(sbi)->nat_bits_blocks) { __u64 cp_ver = cur_cp_version(ckpt); block_t blk; -- 2.10.1 ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Linux-f2fs-devel mailing list Linux-f2fs-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel