|
@@ -2615,18 +2615,16 @@ try_onemore:
|
|
goto free_nm;
|
|
goto free_nm;
|
|
}
|
|
}
|
|
|
|
|
|
- f2fs_join_shrinker(sbi);
|
|
|
|
-
|
|
|
|
err = f2fs_build_stats(sbi);
|
|
err = f2fs_build_stats(sbi);
|
|
if (err)
|
|
if (err)
|
|
- goto free_nm;
|
|
|
|
|
|
+ goto free_node_inode;
|
|
|
|
|
|
/* read root inode and dentry */
|
|
/* read root inode and dentry */
|
|
root = f2fs_iget(sb, F2FS_ROOT_INO(sbi));
|
|
root = f2fs_iget(sb, F2FS_ROOT_INO(sbi));
|
|
if (IS_ERR(root)) {
|
|
if (IS_ERR(root)) {
|
|
f2fs_msg(sb, KERN_ERR, "Failed to read root inode");
|
|
f2fs_msg(sb, KERN_ERR, "Failed to read root inode");
|
|
err = PTR_ERR(root);
|
|
err = PTR_ERR(root);
|
|
- goto free_node_inode;
|
|
|
|
|
|
+ goto free_stats;
|
|
}
|
|
}
|
|
if (!S_ISDIR(root->i_mode) || !root->i_blocks || !root->i_size) {
|
|
if (!S_ISDIR(root->i_mode) || !root->i_blocks || !root->i_size) {
|
|
iput(root);
|
|
iput(root);
|
|
@@ -2722,6 +2720,8 @@ skip_recovery:
|
|
sbi->valid_super_block ? 1 : 2, err);
|
|
sbi->valid_super_block ? 1 : 2, err);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ f2fs_join_shrinker(sbi);
|
|
|
|
+
|
|
f2fs_msg(sbi->sb, KERN_NOTICE, "Mounted with checkpoint version = %llx",
|
|
f2fs_msg(sbi->sb, KERN_NOTICE, "Mounted with checkpoint version = %llx",
|
|
cur_cp_version(F2FS_CKPT(sbi)));
|
|
cur_cp_version(F2FS_CKPT(sbi)));
|
|
f2fs_update_time(sbi, CP_TIME);
|
|
f2fs_update_time(sbi, CP_TIME);
|
|
@@ -2748,14 +2748,12 @@ free_sysfs:
|
|
free_root_inode:
|
|
free_root_inode:
|
|
dput(sb->s_root);
|
|
dput(sb->s_root);
|
|
sb->s_root = NULL;
|
|
sb->s_root = NULL;
|
|
|
|
+free_stats:
|
|
|
|
+ f2fs_destroy_stats(sbi);
|
|
free_node_inode:
|
|
free_node_inode:
|
|
- truncate_inode_pages_final(NODE_MAPPING(sbi));
|
|
|
|
- mutex_lock(&sbi->umount_mutex);
|
|
|
|
release_ino_entry(sbi, true);
|
|
release_ino_entry(sbi, true);
|
|
- f2fs_leave_shrinker(sbi);
|
|
|
|
|
|
+ truncate_inode_pages_final(NODE_MAPPING(sbi));
|
|
iput(sbi->node_inode);
|
|
iput(sbi->node_inode);
|
|
- mutex_unlock(&sbi->umount_mutex);
|
|
|
|
- f2fs_destroy_stats(sbi);
|
|
|
|
free_nm:
|
|
free_nm:
|
|
destroy_node_manager(sbi);
|
|
destroy_node_manager(sbi);
|
|
free_sm:
|
|
free_sm:
|