f2fs-tools: update checkpoint data atomically

This patch keeps line with f2fs kernel module for checkpoint update:
1. writeback all blocks inside checkpoint except last cp_park block;
2. fsync;
3. write last cp_park block;
4. fsync;

Signed-off-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
This commit is contained in:
Chao Yu 2019-05-24 16:26:40 +08:00 committed by Jaegeuk Kim
parent ee0025a13f
commit d1094d9cff
2 changed files with 12 additions and 3 deletions

View File

@ -2113,12 +2113,18 @@ static void fix_checkpoint(struct f2fs_sb_info *sbi)
ASSERT(ret >= 0);
}
ret = dev_write_block(cp, cp_blk_no++);
ASSERT(ret >= 0);
/* Write nat bits */
if (flags & CP_NAT_BITS_FLAG)
write_nat_bits(sbi, sb, cp, sbi->cur_cp);
ret = f2fs_fsync_device();
ASSERT(ret >= 0);
ret = dev_write_block(cp, cp_blk_no++);
ASSERT(ret >= 0);
ret = f2fs_fsync_device();
ASSERT(ret >= 0);
}
int check_curseg_offset(struct f2fs_sb_info *sbi, int type)

View File

@ -2453,6 +2453,9 @@ void write_checkpoint(struct f2fs_sb_info *sbi)
/* write the last cp */
ret = dev_write_block(cp, cp_blk_no++);
ASSERT(ret >= 0);
ret = f2fs_fsync_device();
ASSERT(ret >= 0);
}
void build_nat_area_bitmap(struct f2fs_sb_info *sbi)