f2fs: put directory inodes before checkpoint in roll-forward recovery
authorJaegeuk Kim <jaegeuk@kernel.org>
Tue, 20 Sep 2016 01:13:54 +0000 (18:13 -0700)
committerJaegeuk Kim <jaegeuk@kernel.org>
Fri, 30 Sep 2016 17:05:49 +0000 (10:05 -0700)
Before checkpoint, we'd be better drop any inodes.

Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fs/f2fs/recovery.c

index 2b8a56d..509273a 100644 (file)
@@ -630,6 +630,9 @@ out:
                set_ckpt_flags(sbi->ckpt, CP_ERROR_FLAG);
        mutex_unlock(&sbi->cp_mutex);
 
+       /* let's drop all the directory inodes for clean checkpoint */
+       destroy_fsync_dnodes(&dir_list);
+
        if (!err && need_writecp) {
                struct cp_control cpc = {
                        .reason = CP_RECOVERY,
@@ -637,7 +640,6 @@ out:
                err = write_checkpoint(sbi, &cpc);
        }
 
-       destroy_fsync_dnodes(&dir_list);
        kmem_cache_destroy(fsync_entry_slab);
        return ret ? ret: err;
 }