f2fs: skip new checkpoint when doing fstrim without fs change
authorYunlei He <heyunlei@huawei.com>
Thu, 18 Aug 2016 13:01:19 +0000 (21:01 +0800)
committerJaegeuk Kim <jaegeuk@kernel.org>
Tue, 30 Aug 2016 01:31:07 +0000 (18:31 -0700)
This patch enables to do fstrim without checkpoint, if there is no fs
change.

Signed-off-by: Yunlei He <heyunlei@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fs/f2fs/checkpoint.c

index f94d01e7d001f3181dd9cdae25b50eed3593f44f..cd0443d250632378f092b77299889880627266ca 100644 (file)
@@ -1190,6 +1190,17 @@ int write_checkpoint(struct f2fs_sb_info *sbi, struct cp_control *cpc)
 
        f2fs_flush_merged_bios(sbi);
 
+       /* this is the case of multiple fstrims without any changes */
+       if (cpc->reason == CP_DISCARD && !is_sbi_flag_set(sbi, SBI_IS_DIRTY)) {
+               f2fs_bug_on(sbi, NM_I(sbi)->dirty_nat_cnt);
+               f2fs_bug_on(sbi, SIT_I(sbi)->dirty_sentries);
+               f2fs_bug_on(sbi, prefree_segments(sbi));
+               flush_sit_entries(sbi, cpc);
+               clear_prefree_segments(sbi, cpc);
+               unblock_operations(sbi);
+               goto out;
+       }
+
        /*
         * update checkpoint pack index
         * Increase the version number so that
This page took 0.033066 seconds and 5 git commands to generate.