diff options
author | Jaegeuk Kim <jaegeuk@kernel.org> | 2015-04-09 20:03:53 -0400 |
---|---|---|
committer | Jaegeuk Kim <jaegeuk@kernel.org> | 2015-04-16 12:45:40 -0400 |
commit | 10027551ccf5459cc771c31ac8bc8e5cc8db45f8 (patch) | |
tree | eae6cfe1d0daae9d6ed5e30d63e2f966af847d46 /fs/f2fs | |
parent | feb7cbb079e63ebb7c0bd7022d2ba9c1dd15c69b (diff) |
f2fs: pass checkpoint reason on roll-forward recovery
This patch adds CP_RECOVERY to remain recovery information for checkpoint.
And, it makes sure writing checkpoint in this case.
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Diffstat (limited to 'fs/f2fs')
-rw-r--r-- | fs/f2fs/checkpoint.c | 6 | ||||
-rw-r--r-- | fs/f2fs/f2fs.h | 1 | ||||
-rw-r--r-- | fs/f2fs/recovery.c | 2 |
3 files changed, 7 insertions, 2 deletions
diff --git a/fs/f2fs/checkpoint.c b/fs/f2fs/checkpoint.c index 384bfc4c36c3..a5e17a2a0781 100644 --- a/fs/f2fs/checkpoint.c +++ b/fs/f2fs/checkpoint.c | |||
@@ -1051,7 +1051,7 @@ void write_checkpoint(struct f2fs_sb_info *sbi, struct cp_control *cpc) | |||
1051 | mutex_lock(&sbi->cp_mutex); | 1051 | mutex_lock(&sbi->cp_mutex); |
1052 | 1052 | ||
1053 | if (!is_sbi_flag_set(sbi, SBI_IS_DIRTY) && | 1053 | if (!is_sbi_flag_set(sbi, SBI_IS_DIRTY) && |
1054 | cpc->reason != CP_DISCARD && cpc->reason != CP_UMOUNT) | 1054 | (cpc->reason == CP_FASTBOOT || cpc->reason == CP_SYNC)) |
1055 | goto out; | 1055 | goto out; |
1056 | if (unlikely(f2fs_cp_error(sbi))) | 1056 | if (unlikely(f2fs_cp_error(sbi))) |
1057 | goto out; | 1057 | goto out; |
@@ -1086,6 +1086,10 @@ void write_checkpoint(struct f2fs_sb_info *sbi, struct cp_control *cpc) | |||
1086 | 1086 | ||
1087 | unblock_operations(sbi); | 1087 | unblock_operations(sbi); |
1088 | stat_inc_cp_count(sbi->stat_info); | 1088 | stat_inc_cp_count(sbi->stat_info); |
1089 | |||
1090 | if (cpc->reason == CP_RECOVERY) | ||
1091 | f2fs_msg(sbi->sb, KERN_NOTICE, | ||
1092 | "checkpoint: version = %llx", ckpt_ver); | ||
1089 | out: | 1093 | out: |
1090 | mutex_unlock(&sbi->cp_mutex); | 1094 | mutex_unlock(&sbi->cp_mutex); |
1091 | trace_f2fs_write_checkpoint(sbi->sb, cpc->reason, "finish checkpoint"); | 1095 | trace_f2fs_write_checkpoint(sbi->sb, cpc->reason, "finish checkpoint"); |
diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h index 053361ace0ec..c06a25e5cec3 100644 --- a/fs/f2fs/f2fs.h +++ b/fs/f2fs/f2fs.h | |||
@@ -103,6 +103,7 @@ enum { | |||
103 | CP_UMOUNT, | 103 | CP_UMOUNT, |
104 | CP_FASTBOOT, | 104 | CP_FASTBOOT, |
105 | CP_SYNC, | 105 | CP_SYNC, |
106 | CP_RECOVERY, | ||
106 | CP_DISCARD, | 107 | CP_DISCARD, |
107 | }; | 108 | }; |
108 | 109 | ||
diff --git a/fs/f2fs/recovery.c b/fs/f2fs/recovery.c index 4b742c96c223..8d8ea99f2156 100644 --- a/fs/f2fs/recovery.c +++ b/fs/f2fs/recovery.c | |||
@@ -564,7 +564,7 @@ out: | |||
564 | mutex_unlock(&sbi->cp_mutex); | 564 | mutex_unlock(&sbi->cp_mutex); |
565 | } else if (need_writecp) { | 565 | } else if (need_writecp) { |
566 | struct cp_control cpc = { | 566 | struct cp_control cpc = { |
567 | .reason = CP_SYNC, | 567 | .reason = CP_RECOVERY, |
568 | }; | 568 | }; |
569 | mutex_unlock(&sbi->cp_mutex); | 569 | mutex_unlock(&sbi->cp_mutex); |
570 | write_checkpoint(sbi, &cpc); | 570 | write_checkpoint(sbi, &cpc); |