|
@@ -826,7 +826,7 @@ static void wait_on_all_pages_writeback(struct f2fs_sb_info *sbi)
|
|
|
finish_wait(&sbi->cp_wait, &wait);
|
|
|
}
|
|
|
|
|
|
-static void do_checkpoint(struct f2fs_sb_info *sbi, bool is_umount)
|
|
|
+static void do_checkpoint(struct f2fs_sb_info *sbi, struct cp_control *cpc)
|
|
|
{
|
|
|
struct f2fs_checkpoint *ckpt = F2FS_CKPT(sbi);
|
|
|
struct curseg_info *curseg = CURSEG_I(sbi, CURSEG_WARM_NODE);
|
|
@@ -894,7 +894,7 @@ static void do_checkpoint(struct f2fs_sb_info *sbi, bool is_umount)
|
|
|
ckpt->cp_pack_start_sum = cpu_to_le32(1 + cp_payload_blks +
|
|
|
orphan_blocks);
|
|
|
|
|
|
- if (is_umount) {
|
|
|
+ if (cpc->reason == CP_UMOUNT) {
|
|
|
set_ckpt_flags(ckpt, CP_UMOUNT_FLAG);
|
|
|
ckpt->cp_pack_total_block_count = cpu_to_le32(F2FS_CP_PACKS+
|
|
|
cp_payload_blks + data_sum_blocks +
|
|
@@ -948,7 +948,7 @@ static void do_checkpoint(struct f2fs_sb_info *sbi, bool is_umount)
|
|
|
|
|
|
write_data_summaries(sbi, start_blk);
|
|
|
start_blk += data_sum_blocks;
|
|
|
- if (is_umount) {
|
|
|
+ if (cpc->reason == CP_UMOUNT) {
|
|
|
write_node_summaries(sbi, start_blk);
|
|
|
start_blk += NR_CURSEG_NODE_TYPE;
|
|
|
}
|
|
@@ -988,12 +988,12 @@ static void do_checkpoint(struct f2fs_sb_info *sbi, bool is_umount)
|
|
|
/*
|
|
|
* We guarantee that this checkpoint procedure will not fail.
|
|
|
*/
|
|
|
-void write_checkpoint(struct f2fs_sb_info *sbi, bool is_umount)
|
|
|
+void write_checkpoint(struct f2fs_sb_info *sbi, struct cp_control *cpc)
|
|
|
{
|
|
|
struct f2fs_checkpoint *ckpt = F2FS_CKPT(sbi);
|
|
|
unsigned long long ckpt_ver;
|
|
|
|
|
|
- trace_f2fs_write_checkpoint(sbi->sb, is_umount, "start block_ops");
|
|
|
+ trace_f2fs_write_checkpoint(sbi->sb, cpc->reason, "start block_ops");
|
|
|
|
|
|
mutex_lock(&sbi->cp_mutex);
|
|
|
|
|
@@ -1004,7 +1004,7 @@ void write_checkpoint(struct f2fs_sb_info *sbi, bool is_umount)
|
|
|
if (block_operations(sbi))
|
|
|
goto out;
|
|
|
|
|
|
- trace_f2fs_write_checkpoint(sbi->sb, is_umount, "finish block_ops");
|
|
|
+ trace_f2fs_write_checkpoint(sbi->sb, cpc->reason, "finish block_ops");
|
|
|
|
|
|
f2fs_submit_merged_bio(sbi, DATA, WRITE);
|
|
|
f2fs_submit_merged_bio(sbi, NODE, WRITE);
|
|
@@ -1023,13 +1023,13 @@ void write_checkpoint(struct f2fs_sb_info *sbi, bool is_umount)
|
|
|
flush_sit_entries(sbi);
|
|
|
|
|
|
/* unlock all the fs_lock[] in do_checkpoint() */
|
|
|
- do_checkpoint(sbi, is_umount);
|
|
|
+ do_checkpoint(sbi, cpc);
|
|
|
|
|
|
unblock_operations(sbi);
|
|
|
stat_inc_cp_count(sbi->stat_info);
|
|
|
out:
|
|
|
mutex_unlock(&sbi->cp_mutex);
|
|
|
- trace_f2fs_write_checkpoint(sbi->sb, is_umount, "finish checkpoint");
|
|
|
+ trace_f2fs_write_checkpoint(sbi->sb, cpc->reason, "finish checkpoint");
|
|
|
}
|
|
|
|
|
|
void init_ino_entry_info(struct f2fs_sb_info *sbi)
|