|
@@ -3089,9 +3089,19 @@ static struct dentry *f2fs_mount(struct file_system_type *fs_type, int flags,
|
|
|
static void kill_f2fs_super(struct super_block *sb)
|
|
|
{
|
|
|
if (sb->s_root) {
|
|
|
- set_sbi_flag(F2FS_SB(sb), SBI_IS_CLOSE);
|
|
|
- f2fs_stop_gc_thread(F2FS_SB(sb));
|
|
|
- f2fs_stop_discard_thread(F2FS_SB(sb));
|
|
|
+ struct f2fs_sb_info *sbi = F2FS_SB(sb);
|
|
|
+
|
|
|
+ set_sbi_flag(sbi, SBI_IS_CLOSE);
|
|
|
+ f2fs_stop_gc_thread(sbi);
|
|
|
+ f2fs_stop_discard_thread(sbi);
|
|
|
+
|
|
|
+ if (is_sbi_flag_set(sbi, SBI_IS_DIRTY) ||
|
|
|
+ !is_set_ckpt_flags(sbi, CP_UMOUNT_FLAG)) {
|
|
|
+ struct cp_control cpc = {
|
|
|
+ .reason = CP_UMOUNT,
|
|
|
+ };
|
|
|
+ f2fs_write_checkpoint(sbi, &cpc);
|
|
|
+ }
|
|
|
}
|
|
|
kill_block_super(sb);
|
|
|
}
|