|
@@ -419,6 +419,7 @@ int recover_fsync_data(struct f2fs_sb_info *sbi)
|
|
|
{
|
|
|
struct list_head inode_list;
|
|
|
int err;
|
|
|
+ int need_writecp = 0;
|
|
|
|
|
|
fsync_entry_slab = f2fs_kmem_cache_create("f2fs_fsync_inode_entry",
|
|
|
sizeof(struct fsync_inode_entry), NULL);
|
|
@@ -436,6 +437,8 @@ int recover_fsync_data(struct f2fs_sb_info *sbi)
|
|
|
if (list_empty(&inode_list))
|
|
|
goto out;
|
|
|
|
|
|
+ need_writecp = 1;
|
|
|
+
|
|
|
/* step #2: recover data */
|
|
|
err = recover_data(sbi, &inode_list, CURSEG_WARM_NODE);
|
|
|
BUG_ON(!list_empty(&inode_list));
|
|
@@ -443,7 +446,7 @@ out:
|
|
|
destroy_fsync_dnodes(&inode_list);
|
|
|
kmem_cache_destroy(fsync_entry_slab);
|
|
|
sbi->por_doing = 0;
|
|
|
- if (!err)
|
|
|
+ if (!err && need_writecp)
|
|
|
write_checkpoint(sbi, false);
|
|
|
return err;
|
|
|
}
|