Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 85dc2f2c authored by Jaegeuk Kim's avatar Jaegeuk Kim
Browse files

f2fs: do checkpoint when umount flag is not set



If the previous checkpoint was done without CP_UMOUNT flag, it needs to do
checkpoint with CP_UMOUNT for the next fast boot.

Reviewed-by: default avatarChao Yu <chao2.yu@samsung.com>
Signed-off-by: default avatarJaegeuk Kim <jaegeuk@kernel.org>
parent 30a5537f
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -1043,7 +1043,8 @@ void write_checkpoint(struct f2fs_sb_info *sbi, struct cp_control *cpc)

	mutex_lock(&sbi->cp_mutex);

	if (!sbi->s_dirty && cpc->reason != CP_DISCARD)
	if (!sbi->s_dirty &&
			cpc->reason != CP_DISCARD && cpc->reason != CP_UMOUNT)
		goto out;
	if (unlikely(f2fs_cp_error(sbi)))
		goto out;
+7 −2
Original line number Diff line number Diff line
@@ -447,8 +447,13 @@ static void f2fs_put_super(struct super_block *sb)
	f2fs_destroy_stats(sbi);
	stop_gc_thread(sbi);

	/* We don't need to do checkpoint when it's clean */
	if (sbi->s_dirty) {
	/*
	 * We don't need to do checkpoint when superblock is clean.
	 * But, the previous checkpoint was not done by umount, it needs to do
	 * clean checkpoint again.
	 */
	if (sbi->s_dirty ||
			!is_set_ckpt_flags(F2FS_CKPT(sbi), CP_UMOUNT_FLAG)) {
		struct cp_control cpc = {
			.reason = CP_UMOUNT,
		};