Loading fs/f2fs/recovery.c +3 −1 Original line number Original line Diff line number Diff line Loading @@ -630,6 +630,9 @@ int recover_fsync_data(struct f2fs_sb_info *sbi, bool check_only) set_ckpt_flags(sbi->ckpt, CP_ERROR_FLAG); set_ckpt_flags(sbi->ckpt, CP_ERROR_FLAG); mutex_unlock(&sbi->cp_mutex); mutex_unlock(&sbi->cp_mutex); /* let's drop all the directory inodes for clean checkpoint */ destroy_fsync_dnodes(&dir_list); if (!err && need_writecp) { if (!err && need_writecp) { struct cp_control cpc = { struct cp_control cpc = { .reason = CP_RECOVERY, .reason = CP_RECOVERY, Loading @@ -637,7 +640,6 @@ int recover_fsync_data(struct f2fs_sb_info *sbi, bool check_only) err = write_checkpoint(sbi, &cpc); err = write_checkpoint(sbi, &cpc); } } destroy_fsync_dnodes(&dir_list); kmem_cache_destroy(fsync_entry_slab); kmem_cache_destroy(fsync_entry_slab); return ret ? ret: err; return ret ? ret: err; } } Loading
fs/f2fs/recovery.c +3 −1 Original line number Original line Diff line number Diff line Loading @@ -630,6 +630,9 @@ int recover_fsync_data(struct f2fs_sb_info *sbi, bool check_only) set_ckpt_flags(sbi->ckpt, CP_ERROR_FLAG); set_ckpt_flags(sbi->ckpt, CP_ERROR_FLAG); mutex_unlock(&sbi->cp_mutex); mutex_unlock(&sbi->cp_mutex); /* let's drop all the directory inodes for clean checkpoint */ destroy_fsync_dnodes(&dir_list); if (!err && need_writecp) { if (!err && need_writecp) { struct cp_control cpc = { struct cp_control cpc = { .reason = CP_RECOVERY, .reason = CP_RECOVERY, Loading @@ -637,7 +640,6 @@ int recover_fsync_data(struct f2fs_sb_info *sbi, bool check_only) err = write_checkpoint(sbi, &cpc); err = write_checkpoint(sbi, &cpc); } } destroy_fsync_dnodes(&dir_list); kmem_cache_destroy(fsync_entry_slab); kmem_cache_destroy(fsync_entry_slab); return ret ? ret: err; return ret ? ret: err; } }