Lines Matching refs:sbi

61 void f2fs_build_fault_attr(struct f2fs_sb_info *sbi, unsigned int rate,  in f2fs_build_fault_attr()  argument
64 struct f2fs_fault_info *ffi = &F2FS_OPTION(sbi).fault_info; in f2fs_build_fault_attr()
214 static inline void limit_reserve_root(struct f2fs_sb_info *sbi) in limit_reserve_root() argument
216 block_t limit = (sbi->user_block_count << 1) / 1000; in limit_reserve_root()
219 if (test_opt(sbi, RESERVE_ROOT) && in limit_reserve_root()
220 F2FS_OPTION(sbi).root_reserved_blocks > limit) { in limit_reserve_root()
221 F2FS_OPTION(sbi).root_reserved_blocks = limit; in limit_reserve_root()
222 f2fs_msg(sbi->sb, KERN_INFO, in limit_reserve_root()
224 F2FS_OPTION(sbi).root_reserved_blocks); in limit_reserve_root()
226 if (!test_opt(sbi, RESERVE_ROOT) && in limit_reserve_root()
227 (!uid_eq(F2FS_OPTION(sbi).s_resuid, in limit_reserve_root()
229 !gid_eq(F2FS_OPTION(sbi).s_resgid, in limit_reserve_root()
231 f2fs_msg(sbi->sb, KERN_INFO, in limit_reserve_root()
234 F2FS_OPTION(sbi).s_resuid), in limit_reserve_root()
236 F2FS_OPTION(sbi).s_resgid)); in limit_reserve_root()
252 struct f2fs_sb_info *sbi = F2FS_SB(sb); in f2fs_set_qf_name() local
256 if (sb_any_quota_loaded(sb) && !F2FS_OPTION(sbi).s_qf_names[qtype]) { in f2fs_set_qf_name()
274 if (F2FS_OPTION(sbi).s_qf_names[qtype]) { in f2fs_set_qf_name()
275 if (strcmp(F2FS_OPTION(sbi).s_qf_names[qtype], qname) == 0) in f2fs_set_qf_name()
288 F2FS_OPTION(sbi).s_qf_names[qtype] = qname; in f2fs_set_qf_name()
289 set_opt(sbi, QUOTA); in f2fs_set_qf_name()
298 struct f2fs_sb_info *sbi = F2FS_SB(sb); in f2fs_clear_qf_name() local
300 if (sb_any_quota_loaded(sb) && F2FS_OPTION(sbi).s_qf_names[qtype]) { in f2fs_clear_qf_name()
305 kfree(F2FS_OPTION(sbi).s_qf_names[qtype]); in f2fs_clear_qf_name()
306 F2FS_OPTION(sbi).s_qf_names[qtype] = NULL; in f2fs_clear_qf_name()
310 static int f2fs_check_quota_options(struct f2fs_sb_info *sbi) in f2fs_check_quota_options() argument
317 if (test_opt(sbi, PRJQUOTA) && !f2fs_sb_has_project_quota(sbi->sb)) { in f2fs_check_quota_options()
318 f2fs_msg(sbi->sb, KERN_ERR, "Project quota feature not enabled. " in f2fs_check_quota_options()
322 if (F2FS_OPTION(sbi).s_qf_names[USRQUOTA] || in f2fs_check_quota_options()
323 F2FS_OPTION(sbi).s_qf_names[GRPQUOTA] || in f2fs_check_quota_options()
324 F2FS_OPTION(sbi).s_qf_names[PRJQUOTA]) { in f2fs_check_quota_options()
325 if (test_opt(sbi, USRQUOTA) && in f2fs_check_quota_options()
326 F2FS_OPTION(sbi).s_qf_names[USRQUOTA]) in f2fs_check_quota_options()
327 clear_opt(sbi, USRQUOTA); in f2fs_check_quota_options()
329 if (test_opt(sbi, GRPQUOTA) && in f2fs_check_quota_options()
330 F2FS_OPTION(sbi).s_qf_names[GRPQUOTA]) in f2fs_check_quota_options()
331 clear_opt(sbi, GRPQUOTA); in f2fs_check_quota_options()
333 if (test_opt(sbi, PRJQUOTA) && in f2fs_check_quota_options()
334 F2FS_OPTION(sbi).s_qf_names[PRJQUOTA]) in f2fs_check_quota_options()
335 clear_opt(sbi, PRJQUOTA); in f2fs_check_quota_options()
337 if (test_opt(sbi, GRPQUOTA) || test_opt(sbi, USRQUOTA) || in f2fs_check_quota_options()
338 test_opt(sbi, PRJQUOTA)) { in f2fs_check_quota_options()
339 f2fs_msg(sbi->sb, KERN_ERR, "old and new quota " in f2fs_check_quota_options()
344 if (!F2FS_OPTION(sbi).s_jquota_fmt) { in f2fs_check_quota_options()
345 f2fs_msg(sbi->sb, KERN_ERR, "journaled quota format " in f2fs_check_quota_options()
351 if (f2fs_sb_has_quota_ino(sbi->sb) && F2FS_OPTION(sbi).s_jquota_fmt) { in f2fs_check_quota_options()
352 f2fs_msg(sbi->sb, KERN_INFO, in f2fs_check_quota_options()
354 F2FS_OPTION(sbi).s_jquota_fmt = 0; in f2fs_check_quota_options()
362 struct f2fs_sb_info *sbi = F2FS_SB(sb); in parse_options() local
394 set_opt(sbi, BG_GC); in parse_options()
395 clear_opt(sbi, FORCE_FG_GC); in parse_options()
397 clear_opt(sbi, BG_GC); in parse_options()
398 clear_opt(sbi, FORCE_FG_GC); in parse_options()
400 set_opt(sbi, BG_GC); in parse_options()
401 set_opt(sbi, FORCE_FG_GC); in parse_options()
409 set_opt(sbi, DISABLE_ROLL_FORWARD); in parse_options()
413 set_opt(sbi, DISABLE_ROLL_FORWARD); in parse_options()
420 set_opt(sbi, DISCARD); in parse_options()
433 clear_opt(sbi, DISCARD); in parse_options()
436 set_opt(sbi, NOHEAP); in parse_options()
439 clear_opt(sbi, NOHEAP); in parse_options()
443 set_opt(sbi, XATTR_USER); in parse_options()
446 clear_opt(sbi, XATTR_USER); in parse_options()
449 set_opt(sbi, INLINE_XATTR); in parse_options()
452 clear_opt(sbi, INLINE_XATTR); in parse_options()
457 set_opt(sbi, INLINE_XATTR_SIZE); in parse_options()
458 F2FS_OPTION(sbi).inline_xattr_size = arg; in parse_options()
480 set_opt(sbi, POSIX_ACL); in parse_options()
483 clear_opt(sbi, POSIX_ACL); in parse_options()
498 F2FS_OPTION(sbi).active_logs = arg; in parse_options()
501 set_opt(sbi, DISABLE_EXT_IDENTIFY); in parse_options()
504 set_opt(sbi, INLINE_DATA); in parse_options()
507 set_opt(sbi, INLINE_DENTRY); in parse_options()
510 clear_opt(sbi, INLINE_DENTRY); in parse_options()
513 set_opt(sbi, FLUSH_MERGE); in parse_options()
516 clear_opt(sbi, FLUSH_MERGE); in parse_options()
519 set_opt(sbi, NOBARRIER); in parse_options()
522 set_opt(sbi, FASTBOOT); in parse_options()
525 set_opt(sbi, EXTENT_CACHE); in parse_options()
528 clear_opt(sbi, EXTENT_CACHE); in parse_options()
531 clear_opt(sbi, INLINE_DATA); in parse_options()
534 set_opt(sbi, DATA_FLUSH); in parse_options()
539 if (test_opt(sbi, RESERVE_ROOT)) { in parse_options()
542 F2FS_OPTION(sbi).root_reserved_blocks); in parse_options()
544 F2FS_OPTION(sbi).root_reserved_blocks = arg; in parse_options()
545 set_opt(sbi, RESERVE_ROOT); in parse_options()
557 F2FS_OPTION(sbi).s_resuid = uid; in parse_options()
568 F2FS_OPTION(sbi).s_resgid = gid; in parse_options()
584 set_opt_mode(sbi, F2FS_MOUNT_ADAPTIVE); in parse_options()
587 set_opt_mode(sbi, F2FS_MOUNT_LFS); in parse_options()
603 F2FS_OPTION(sbi).write_io_size_bits = arg; in parse_options()
609 f2fs_build_fault_attr(sbi, arg, F2FS_ALL_FAULT_TYPE); in parse_options()
610 set_opt(sbi, FAULT_INJECTION); in parse_options()
620 f2fs_build_fault_attr(sbi, 0, arg); in parse_options()
621 set_opt(sbi, FAULT_INJECTION); in parse_options()
636 set_opt(sbi, USRQUOTA); in parse_options()
639 set_opt(sbi, GRPQUOTA); in parse_options()
642 set_opt(sbi, PRJQUOTA); in parse_options()
675 F2FS_OPTION(sbi).s_jquota_fmt = QFMT_VFS_OLD; in parse_options()
678 F2FS_OPTION(sbi).s_jquota_fmt = QFMT_VFS_V0; in parse_options()
681 F2FS_OPTION(sbi).s_jquota_fmt = QFMT_VFS_V1; in parse_options()
684 clear_opt(sbi, QUOTA); in parse_options()
685 clear_opt(sbi, USRQUOTA); in parse_options()
686 clear_opt(sbi, GRPQUOTA); in parse_options()
687 clear_opt(sbi, PRJQUOTA); in parse_options()
714 F2FS_OPTION(sbi).whint_mode = WHINT_MODE_USER; in parse_options()
717 F2FS_OPTION(sbi).whint_mode = WHINT_MODE_OFF; in parse_options()
720 F2FS_OPTION(sbi).whint_mode = WHINT_MODE_FS; in parse_options()
734 F2FS_OPTION(sbi).alloc_mode = ALLOC_MODE_DEFAULT; in parse_options()
737 F2FS_OPTION(sbi).alloc_mode = ALLOC_MODE_REUSE; in parse_options()
750 F2FS_OPTION(sbi).fsync_mode = FSYNC_MODE_POSIX; in parse_options()
753 F2FS_OPTION(sbi).fsync_mode = FSYNC_MODE_STRICT; in parse_options()
756 F2FS_OPTION(sbi).fsync_mode = in parse_options()
771 F2FS_OPTION(sbi).test_dummy_encryption = true; in parse_options()
787 if (f2fs_check_quota_options(sbi)) in parse_options()
790 if (f2fs_sb_has_quota_ino(sbi->sb) && !f2fs_readonly(sbi->sb)) { in parse_options()
791 f2fs_msg(sbi->sb, KERN_INFO, in parse_options()
796 if (f2fs_sb_has_project_quota(sbi->sb) && !f2fs_readonly(sbi->sb)) { in parse_options()
804 if (F2FS_IO_SIZE_BITS(sbi) && !test_opt(sbi, LFS)) { in parse_options()
807 F2FS_IO_SIZE_KB(sbi)); in parse_options()
811 if (test_opt(sbi, INLINE_XATTR_SIZE)) { in parse_options()
819 if (!test_opt(sbi, INLINE_XATTR)) { in parse_options()
825 if (!F2FS_OPTION(sbi).inline_xattr_size || in parse_options()
826 F2FS_OPTION(sbi).inline_xattr_size >= in parse_options()
840 if (F2FS_OPTION(sbi).active_logs != NR_CURSEG_TYPE) in parse_options()
841 F2FS_OPTION(sbi).whint_mode = WHINT_MODE_OFF; in parse_options()
918 struct f2fs_sb_info *sbi = F2FS_I_SB(inode); in f2fs_inode_dirtied() local
921 spin_lock(&sbi->inode_lock[DIRTY_META]); in f2fs_inode_dirtied()
926 stat_inc_dirty_inode(sbi, DIRTY_META); in f2fs_inode_dirtied()
930 &sbi->inode_list[DIRTY_META]); in f2fs_inode_dirtied()
931 inc_page_count(sbi, F2FS_DIRTY_IMETA); in f2fs_inode_dirtied()
933 spin_unlock(&sbi->inode_lock[DIRTY_META]); in f2fs_inode_dirtied()
939 struct f2fs_sb_info *sbi = F2FS_I_SB(inode); in f2fs_inode_synced() local
941 spin_lock(&sbi->inode_lock[DIRTY_META]); in f2fs_inode_synced()
943 spin_unlock(&sbi->inode_lock[DIRTY_META]); in f2fs_inode_synced()
948 dec_page_count(sbi, F2FS_DIRTY_IMETA); in f2fs_inode_synced()
953 spin_unlock(&sbi->inode_lock[DIRTY_META]); in f2fs_inode_synced()
963 struct f2fs_sb_info *sbi = F2FS_I_SB(inode); in f2fs_dirty_inode() local
965 if (inode->i_ino == F2FS_NODE_INO(sbi) || in f2fs_dirty_inode()
966 inode->i_ino == F2FS_META_INO(sbi)) in f2fs_dirty_inode()
989 static void destroy_percpu_info(struct f2fs_sb_info *sbi) in destroy_percpu_info() argument
991 percpu_counter_destroy(&sbi->alloc_valid_block_count); in destroy_percpu_info()
992 percpu_counter_destroy(&sbi->total_valid_inode_count); in destroy_percpu_info()
995 static void destroy_device_list(struct f2fs_sb_info *sbi) in destroy_device_list() argument
999 for (i = 0; i < sbi->s_ndevs; i++) { in destroy_device_list()
1005 kfree(sbi->devs); in destroy_device_list()
1010 struct f2fs_sb_info *sbi = F2FS_SB(sb); in f2fs_put_super() local
1017 mutex_lock(&sbi->umount_mutex); in f2fs_put_super()
1024 if (is_sbi_flag_set(sbi, SBI_IS_DIRTY) || in f2fs_put_super()
1025 !is_set_ckpt_flags(sbi, CP_UMOUNT_FLAG)) { in f2fs_put_super()
1029 f2fs_write_checkpoint(sbi, &cpc); in f2fs_put_super()
1033 dropped = f2fs_wait_discard_bios(sbi); in f2fs_put_super()
1035 if (f2fs_discard_en(sbi) && !sbi->discard_blks && !dropped) { in f2fs_put_super()
1039 f2fs_write_checkpoint(sbi, &cpc); in f2fs_put_super()
1043 f2fs_destroy_stats(sbi); in f2fs_put_super()
1049 f2fs_release_ino_entry(sbi, true); in f2fs_put_super()
1051 f2fs_leave_shrinker(sbi); in f2fs_put_super()
1052 mutex_unlock(&sbi->umount_mutex); in f2fs_put_super()
1055 f2fs_flush_merged_writes(sbi); in f2fs_put_super()
1057 f2fs_wait_on_all_pages_writeback(sbi); in f2fs_put_super()
1059 f2fs_bug_on(sbi, sbi->fsync_node_num); in f2fs_put_super()
1061 iput(sbi->node_inode); in f2fs_put_super()
1062 iput(sbi->meta_inode); in f2fs_put_super()
1065 f2fs_destroy_node_manager(sbi); in f2fs_put_super()
1066 f2fs_destroy_segment_manager(sbi); in f2fs_put_super()
1068 kfree(sbi->ckpt); in f2fs_put_super()
1070 f2fs_unregister_sysfs(sbi); in f2fs_put_super()
1073 if (sbi->s_chksum_driver) in f2fs_put_super()
1074 crypto_free_shash(sbi->s_chksum_driver); in f2fs_put_super()
1075 kfree(sbi->raw_super); in f2fs_put_super()
1077 destroy_device_list(sbi); in f2fs_put_super()
1078 mempool_destroy(sbi->write_io_dummy); in f2fs_put_super()
1081 kfree(F2FS_OPTION(sbi).s_qf_names[i]); in f2fs_put_super()
1083 destroy_percpu_info(sbi); in f2fs_put_super()
1085 kfree(sbi->write_io[i]); in f2fs_put_super()
1086 kfree(sbi); in f2fs_put_super()
1091 struct f2fs_sb_info *sbi = F2FS_SB(sb); in f2fs_sync_fs() local
1094 if (unlikely(f2fs_cp_error(sbi))) in f2fs_sync_fs()
1099 if (unlikely(is_sbi_flag_set(sbi, SBI_POR_DOING))) in f2fs_sync_fs()
1105 cpc.reason = __get_cp_reason(sbi); in f2fs_sync_fs()
1107 mutex_lock(&sbi->gc_mutex); in f2fs_sync_fs()
1108 err = f2fs_write_checkpoint(sbi, &cpc); in f2fs_sync_fs()
1109 mutex_unlock(&sbi->gc_mutex); in f2fs_sync_fs()
1181 struct f2fs_sb_info *sbi = F2FS_SB(sb); in f2fs_statfs() local
1186 total_count = le64_to_cpu(sbi->raw_super->block_count); in f2fs_statfs()
1187 user_block_count = sbi->user_block_count; in f2fs_statfs()
1188 start_count = le32_to_cpu(sbi->raw_super->segment0_blkaddr); in f2fs_statfs()
1190 buf->f_bsize = sbi->blocksize; in f2fs_statfs()
1193 buf->f_bfree = user_block_count - valid_user_blocks(sbi) - in f2fs_statfs()
1194 sbi->current_reserved_blocks; in f2fs_statfs()
1195 if (buf->f_bfree > F2FS_OPTION(sbi).root_reserved_blocks) in f2fs_statfs()
1197 F2FS_OPTION(sbi).root_reserved_blocks; in f2fs_statfs()
1201 avail_node_count = sbi->total_node_count - sbi->nquota_files - in f2fs_statfs()
1209 buf->f_ffree = min(avail_node_count - valid_node_count(sbi), in f2fs_statfs()
1230 struct f2fs_sb_info *sbi = F2FS_SB(sb); in f2fs_show_quota_options() local
1232 if (F2FS_OPTION(sbi).s_jquota_fmt) { in f2fs_show_quota_options()
1235 switch (F2FS_OPTION(sbi).s_jquota_fmt) { in f2fs_show_quota_options()
1249 if (F2FS_OPTION(sbi).s_qf_names[USRQUOTA]) in f2fs_show_quota_options()
1251 F2FS_OPTION(sbi).s_qf_names[USRQUOTA]); in f2fs_show_quota_options()
1253 if (F2FS_OPTION(sbi).s_qf_names[GRPQUOTA]) in f2fs_show_quota_options()
1255 F2FS_OPTION(sbi).s_qf_names[GRPQUOTA]); in f2fs_show_quota_options()
1257 if (F2FS_OPTION(sbi).s_qf_names[PRJQUOTA]) in f2fs_show_quota_options()
1259 F2FS_OPTION(sbi).s_qf_names[PRJQUOTA]); in f2fs_show_quota_options()
1265 struct f2fs_sb_info *sbi = F2FS_SB(root->d_sb); in f2fs_show_options() local
1267 if (!f2fs_readonly(sbi->sb) && test_opt(sbi, BG_GC)) { in f2fs_show_options()
1268 if (test_opt(sbi, FORCE_FG_GC)) in f2fs_show_options()
1275 if (test_opt(sbi, DISABLE_ROLL_FORWARD)) in f2fs_show_options()
1277 if (test_opt(sbi, DISCARD)) in f2fs_show_options()
1279 if (test_opt(sbi, NOHEAP)) in f2fs_show_options()
1284 if (test_opt(sbi, XATTR_USER)) in f2fs_show_options()
1288 if (test_opt(sbi, INLINE_XATTR)) in f2fs_show_options()
1292 if (test_opt(sbi, INLINE_XATTR_SIZE)) in f2fs_show_options()
1294 F2FS_OPTION(sbi).inline_xattr_size); in f2fs_show_options()
1297 if (test_opt(sbi, POSIX_ACL)) in f2fs_show_options()
1302 if (test_opt(sbi, DISABLE_EXT_IDENTIFY)) in f2fs_show_options()
1304 if (test_opt(sbi, INLINE_DATA)) in f2fs_show_options()
1308 if (test_opt(sbi, INLINE_DENTRY)) in f2fs_show_options()
1312 if (!f2fs_readonly(sbi->sb) && test_opt(sbi, FLUSH_MERGE)) in f2fs_show_options()
1314 if (test_opt(sbi, NOBARRIER)) in f2fs_show_options()
1316 if (test_opt(sbi, FASTBOOT)) in f2fs_show_options()
1318 if (test_opt(sbi, EXTENT_CACHE)) in f2fs_show_options()
1322 if (test_opt(sbi, DATA_FLUSH)) in f2fs_show_options()
1326 if (test_opt(sbi, ADAPTIVE)) in f2fs_show_options()
1328 else if (test_opt(sbi, LFS)) in f2fs_show_options()
1330 seq_printf(seq, ",active_logs=%u", F2FS_OPTION(sbi).active_logs); in f2fs_show_options()
1331 if (test_opt(sbi, RESERVE_ROOT)) in f2fs_show_options()
1333 F2FS_OPTION(sbi).root_reserved_blocks, in f2fs_show_options()
1335 F2FS_OPTION(sbi).s_resuid), in f2fs_show_options()
1337 F2FS_OPTION(sbi).s_resgid)); in f2fs_show_options()
1338 if (F2FS_IO_SIZE_BITS(sbi)) in f2fs_show_options()
1339 seq_printf(seq, ",io_size=%uKB", F2FS_IO_SIZE_KB(sbi)); in f2fs_show_options()
1341 if (test_opt(sbi, FAULT_INJECTION)) { in f2fs_show_options()
1343 F2FS_OPTION(sbi).fault_info.inject_rate); in f2fs_show_options()
1345 F2FS_OPTION(sbi).fault_info.inject_type); in f2fs_show_options()
1349 if (test_opt(sbi, QUOTA)) in f2fs_show_options()
1351 if (test_opt(sbi, USRQUOTA)) in f2fs_show_options()
1353 if (test_opt(sbi, GRPQUOTA)) in f2fs_show_options()
1355 if (test_opt(sbi, PRJQUOTA)) in f2fs_show_options()
1358 f2fs_show_quota_options(seq, sbi->sb); in f2fs_show_options()
1359 if (F2FS_OPTION(sbi).whint_mode == WHINT_MODE_USER) in f2fs_show_options()
1361 else if (F2FS_OPTION(sbi).whint_mode == WHINT_MODE_FS) in f2fs_show_options()
1364 if (F2FS_OPTION(sbi).test_dummy_encryption) in f2fs_show_options()
1368 if (F2FS_OPTION(sbi).alloc_mode == ALLOC_MODE_DEFAULT) in f2fs_show_options()
1370 else if (F2FS_OPTION(sbi).alloc_mode == ALLOC_MODE_REUSE) in f2fs_show_options()
1373 if (F2FS_OPTION(sbi).fsync_mode == FSYNC_MODE_POSIX) in f2fs_show_options()
1375 else if (F2FS_OPTION(sbi).fsync_mode == FSYNC_MODE_STRICT) in f2fs_show_options()
1377 else if (F2FS_OPTION(sbi).fsync_mode == FSYNC_MODE_NOBARRIER) in f2fs_show_options()
1382 static void default_options(struct f2fs_sb_info *sbi) in default_options() argument
1385 F2FS_OPTION(sbi).active_logs = NR_CURSEG_TYPE; in default_options()
1386 F2FS_OPTION(sbi).inline_xattr_size = DEFAULT_INLINE_XATTR_ADDRS; in default_options()
1387 F2FS_OPTION(sbi).whint_mode = WHINT_MODE_OFF; in default_options()
1388 F2FS_OPTION(sbi).alloc_mode = ALLOC_MODE_DEFAULT; in default_options()
1389 F2FS_OPTION(sbi).fsync_mode = FSYNC_MODE_POSIX; in default_options()
1390 F2FS_OPTION(sbi).test_dummy_encryption = false; in default_options()
1391 F2FS_OPTION(sbi).s_resuid = make_kuid(&init_user_ns, F2FS_DEF_RESUID); in default_options()
1392 F2FS_OPTION(sbi).s_resgid = make_kgid(&init_user_ns, F2FS_DEF_RESGID); in default_options()
1394 set_opt(sbi, BG_GC); in default_options()
1395 set_opt(sbi, INLINE_XATTR); in default_options()
1396 set_opt(sbi, INLINE_DATA); in default_options()
1397 set_opt(sbi, INLINE_DENTRY); in default_options()
1398 set_opt(sbi, EXTENT_CACHE); in default_options()
1399 set_opt(sbi, NOHEAP); in default_options()
1400 sbi->sb->s_flags |= SB_LAZYTIME; in default_options()
1401 set_opt(sbi, FLUSH_MERGE); in default_options()
1402 if (blk_queue_discard(bdev_get_queue(sbi->sb->s_bdev))) in default_options()
1403 set_opt(sbi, DISCARD); in default_options()
1404 if (f2fs_sb_has_blkzoned(sbi->sb)) in default_options()
1405 set_opt_mode(sbi, F2FS_MOUNT_LFS); in default_options()
1407 set_opt_mode(sbi, F2FS_MOUNT_ADAPTIVE); in default_options()
1410 set_opt(sbi, XATTR_USER); in default_options()
1413 set_opt(sbi, POSIX_ACL); in default_options()
1416 f2fs_build_fault_attr(sbi, 0, 0); in default_options()
1424 struct f2fs_sb_info *sbi = F2FS_SB(sb); in f2fs_remount() local
1430 bool no_extent_cache = !test_opt(sbi, EXTENT_CACHE); in f2fs_remount()
1439 org_mount_opt = sbi->mount_opt; in f2fs_remount()
1443 org_mount_opt.s_jquota_fmt = F2FS_OPTION(sbi).s_jquota_fmt; in f2fs_remount()
1445 if (F2FS_OPTION(sbi).s_qf_names[i]) { in f2fs_remount()
1447 kstrdup(F2FS_OPTION(sbi).s_qf_names[i], in f2fs_remount()
1461 if (!(*flags & SB_RDONLY) && is_sbi_flag_set(sbi, SBI_NEED_SB_WRITE)) { in f2fs_remount()
1462 err = f2fs_commit_super(sbi, false); in f2fs_remount()
1466 clear_sbi_flag(sbi, SBI_NEED_SB_WRITE); in f2fs_remount()
1469 default_options(sbi); in f2fs_remount()
1501 if (no_extent_cache == !!test_opt(sbi, EXTENT_CACHE)) { in f2fs_remount()
1503 f2fs_msg(sbi->sb, KERN_WARNING, in f2fs_remount()
1513 if ((*flags & SB_RDONLY) || !test_opt(sbi, BG_GC)) { in f2fs_remount()
1514 if (sbi->gc_thread) { in f2fs_remount()
1515 f2fs_stop_gc_thread(sbi); in f2fs_remount()
1518 } else if (!sbi->gc_thread) { in f2fs_remount()
1519 err = f2fs_start_gc_thread(sbi); in f2fs_remount()
1526 F2FS_OPTION(sbi).whint_mode != org_mount_opt.whint_mode) { in f2fs_remount()
1530 set_sbi_flag(sbi, SBI_IS_DIRTY); in f2fs_remount()
1531 set_sbi_flag(sbi, SBI_IS_CLOSE); in f2fs_remount()
1533 clear_sbi_flag(sbi, SBI_IS_CLOSE); in f2fs_remount()
1540 if ((*flags & SB_RDONLY) || !test_opt(sbi, FLUSH_MERGE)) { in f2fs_remount()
1541 clear_opt(sbi, FLUSH_MERGE); in f2fs_remount()
1542 f2fs_destroy_flush_cmd_control(sbi, false); in f2fs_remount()
1544 err = f2fs_create_flush_cmd_control(sbi); in f2fs_remount()
1556 (test_opt(sbi, POSIX_ACL) ? SB_POSIXACL : 0); in f2fs_remount()
1558 limit_reserve_root(sbi); in f2fs_remount()
1562 if (f2fs_start_gc_thread(sbi)) in f2fs_remount()
1563 f2fs_msg(sbi->sb, KERN_WARNING, in f2fs_remount()
1566 f2fs_stop_gc_thread(sbi); in f2fs_remount()
1570 F2FS_OPTION(sbi).s_jquota_fmt = org_mount_opt.s_jquota_fmt; in f2fs_remount()
1572 kfree(F2FS_OPTION(sbi).s_qf_names[i]); in f2fs_remount()
1573 F2FS_OPTION(sbi).s_qf_names[i] = org_mount_opt.s_qf_names[i]; in f2fs_remount()
1576 sbi->mount_opt = org_mount_opt; in f2fs_remount()
1697 static int f2fs_quota_on_mount(struct f2fs_sb_info *sbi, int type) in f2fs_quota_on_mount() argument
1699 return dquot_quota_on_mount(sbi->sb, F2FS_OPTION(sbi).s_qf_names[type], in f2fs_quota_on_mount()
1700 F2FS_OPTION(sbi).s_jquota_fmt, type); in f2fs_quota_on_mount()
1703 int f2fs_enable_quota_files(struct f2fs_sb_info *sbi, bool rdonly) in f2fs_enable_quota_files() argument
1708 if (f2fs_sb_has_quota_ino(sbi->sb) && rdonly) { in f2fs_enable_quota_files()
1709 err = f2fs_enable_quotas(sbi->sb); in f2fs_enable_quota_files()
1711 f2fs_msg(sbi->sb, KERN_ERR, in f2fs_enable_quota_files()
1719 if (F2FS_OPTION(sbi).s_qf_names[i]) { in f2fs_enable_quota_files()
1720 err = f2fs_quota_on_mount(sbi, i); in f2fs_enable_quota_files()
1725 f2fs_msg(sbi->sb, KERN_ERR, in f2fs_enable_quota_files()
1946 struct f2fs_sb_info *sbi = F2FS_I_SB(inode); in f2fs_set_context() local
1954 if (f2fs_sb_has_lost_found(sbi->sb) && in f2fs_set_context()
1955 inode->i_ino == F2FS_ROOT_INO(sbi)) in f2fs_set_context()
1981 struct f2fs_sb_info *sbi = F2FS_SB(sb); in f2fs_nfs_get_inode() local
1984 if (f2fs_check_nid_range(sbi, ino)) in f2fs_nfs_get_inode()
2062 static inline bool sanity_check_area_boundary(struct f2fs_sb_info *sbi, in sanity_check_area_boundary() argument
2067 struct super_block *sb = sbi->sb; in sanity_check_area_boundary()
2146 set_sbi_flag(sbi, SBI_NEED_SB_WRITE); in sanity_check_area_boundary()
2164 static int sanity_check_raw_super(struct f2fs_sb_info *sbi, in sanity_check_raw_super() argument
2171 struct super_block *sb = sbi->sb; in sanity_check_raw_super()
2304 if (sanity_check_area_boundary(sbi, bh)) in sanity_check_raw_super()
2310 int f2fs_sanity_check_ckpt(struct f2fs_sb_info *sbi) in f2fs_sanity_check_ckpt() argument
2313 struct f2fs_super_block *raw_super = F2FS_RAW_SUPER(sbi); in f2fs_sanity_check_ckpt()
2314 struct f2fs_checkpoint *ckpt = F2FS_CKPT(sbi); in f2fs_sanity_check_ckpt()
2342 f2fs_msg(sbi->sb, KERN_ERR, in f2fs_sanity_check_ckpt()
2352 f2fs_msg(sbi->sb, KERN_ERR, in f2fs_sanity_check_ckpt()
2358 blocks_per_seg = sbi->blocks_per_seg; in f2fs_sanity_check_ckpt()
2376 f2fs_msg(sbi->sb, KERN_ERR, in f2fs_sanity_check_ckpt()
2382 cp_pack_start_sum = __start_sum_addr(sbi); in f2fs_sanity_check_ckpt()
2383 cp_payload = __cp_payload(sbi); in f2fs_sanity_check_ckpt()
2387 f2fs_msg(sbi->sb, KERN_ERR, in f2fs_sanity_check_ckpt()
2393 if (unlikely(f2fs_cp_error(sbi))) { in f2fs_sanity_check_ckpt()
2394 f2fs_msg(sbi->sb, KERN_ERR, "A bug case: need to run fsck"); in f2fs_sanity_check_ckpt()
2400 static void init_sb_info(struct f2fs_sb_info *sbi) in init_sb_info() argument
2402 struct f2fs_super_block *raw_super = sbi->raw_super; in init_sb_info()
2405 sbi->log_sectors_per_block = in init_sb_info()
2407 sbi->log_blocksize = le32_to_cpu(raw_super->log_blocksize); in init_sb_info()
2408 sbi->blocksize = 1 << sbi->log_blocksize; in init_sb_info()
2409 sbi->log_blocks_per_seg = le32_to_cpu(raw_super->log_blocks_per_seg); in init_sb_info()
2410 sbi->blocks_per_seg = 1 << sbi->log_blocks_per_seg; in init_sb_info()
2411 sbi->segs_per_sec = le32_to_cpu(raw_super->segs_per_sec); in init_sb_info()
2412 sbi->secs_per_zone = le32_to_cpu(raw_super->secs_per_zone); in init_sb_info()
2413 sbi->total_sections = le32_to_cpu(raw_super->section_count); in init_sb_info()
2414 sbi->total_node_count = in init_sb_info()
2416 * sbi->blocks_per_seg * NAT_ENTRY_PER_BLOCK; in init_sb_info()
2417 sbi->root_ino_num = le32_to_cpu(raw_super->root_ino); in init_sb_info()
2418 sbi->node_ino_num = le32_to_cpu(raw_super->node_ino); in init_sb_info()
2419 sbi->meta_ino_num = le32_to_cpu(raw_super->meta_ino); in init_sb_info()
2420 sbi->cur_victim_sec = NULL_SECNO; in init_sb_info()
2421 sbi->max_victim_search = DEF_MAX_VICTIM_SEARCH; in init_sb_info()
2423 sbi->dir_level = DEF_DIR_LEVEL; in init_sb_info()
2424 sbi->interval_time[CP_TIME] = DEF_CP_INTERVAL; in init_sb_info()
2425 sbi->interval_time[REQ_TIME] = DEF_IDLE_INTERVAL; in init_sb_info()
2426 clear_sbi_flag(sbi, SBI_NEED_FSCK); in init_sb_info()
2429 atomic_set(&sbi->nr_pages[i], 0); in init_sb_info()
2432 atomic_set(&sbi->wb_sync_req[i], 0); in init_sb_info()
2434 INIT_LIST_HEAD(&sbi->s_list); in init_sb_info()
2435 mutex_init(&sbi->umount_mutex); in init_sb_info()
2438 mutex_init(&sbi->wio_mutex[i][j]); in init_sb_info()
2439 init_rwsem(&sbi->io_order_lock); in init_sb_info()
2440 spin_lock_init(&sbi->cp_lock); in init_sb_info()
2442 sbi->dirty_device = 0; in init_sb_info()
2443 spin_lock_init(&sbi->dev_lock); in init_sb_info()
2445 init_rwsem(&sbi->sb_lock); in init_sb_info()
2448 static int init_percpu_info(struct f2fs_sb_info *sbi) in init_percpu_info() argument
2452 err = percpu_counter_init(&sbi->alloc_valid_block_count, 0, GFP_KERNEL); in init_percpu_info()
2456 return percpu_counter_init(&sbi->total_valid_inode_count, 0, in init_percpu_info()
2461 static int init_blkz_info(struct f2fs_sb_info *sbi, int devi) in init_blkz_info() argument
2471 if (!f2fs_sb_has_blkzoned(sbi->sb)) in init_blkz_info()
2474 if (sbi->blocks_per_blkz && sbi->blocks_per_blkz != in init_blkz_info()
2477 sbi->blocks_per_blkz = SECTOR_TO_BLOCK(bdev_zone_sectors(bdev)); in init_blkz_info()
2478 if (sbi->log_blocks_per_blkz && sbi->log_blocks_per_blkz != in init_blkz_info()
2479 __ilog2_u32(sbi->blocks_per_blkz)) in init_blkz_info()
2481 sbi->log_blocks_per_blkz = __ilog2_u32(sbi->blocks_per_blkz); in init_blkz_info()
2483 sbi->log_blocks_per_blkz; in init_blkz_info()
2487 FDEV(devi).blkz_type = f2fs_kmalloc(sbi, FDEV(devi).nr_blkz, in init_blkz_info()
2494 zones = f2fs_kzalloc(sbi, in init_blkz_info()
2534 static int read_raw_super_block(struct f2fs_sb_info *sbi, in read_raw_super_block() argument
2538 struct super_block *sb = sbi->sb; in read_raw_super_block()
2558 if (sanity_check_raw_super(sbi, bh)) { in read_raw_super_block()
2589 int f2fs_commit_super(struct f2fs_sb_info *sbi, bool recover) in f2fs_commit_super() argument
2594 if ((recover && f2fs_readonly(sbi->sb)) || in f2fs_commit_super()
2595 bdev_read_only(sbi->sb->s_bdev)) { in f2fs_commit_super()
2596 set_sbi_flag(sbi, SBI_NEED_SB_WRITE); in f2fs_commit_super()
2601 bh = sb_bread(sbi->sb, sbi->valid_super_block ? 0 : 1); in f2fs_commit_super()
2604 err = __f2fs_commit_super(bh, F2FS_RAW_SUPER(sbi)); in f2fs_commit_super()
2612 bh = sb_bread(sbi->sb, sbi->valid_super_block); in f2fs_commit_super()
2615 err = __f2fs_commit_super(bh, F2FS_RAW_SUPER(sbi)); in f2fs_commit_super()
2620 static int f2fs_scan_devices(struct f2fs_sb_info *sbi) in f2fs_scan_devices() argument
2622 struct f2fs_super_block *raw_super = F2FS_RAW_SUPER(sbi); in f2fs_scan_devices()
2628 if (!bdev_is_zoned(sbi->sb->s_bdev)) in f2fs_scan_devices()
2637 sbi->devs = f2fs_kzalloc(sbi, in f2fs_scan_devices()
2641 if (!sbi->devs) in f2fs_scan_devices()
2652 blkdev_get_by_dev(sbi->sb->s_bdev->bd_dev, in f2fs_scan_devices()
2653 sbi->sb->s_mode, sbi->sb->s_type); in f2fs_scan_devices()
2663 sbi->log_blocks_per_seg) - 1 + in f2fs_scan_devices()
2669 sbi->log_blocks_per_seg) - 1; in f2fs_scan_devices()
2672 sbi->sb->s_mode, sbi->sb->s_type); in f2fs_scan_devices()
2678 sbi->s_ndevs = i + 1; in f2fs_scan_devices()
2682 !f2fs_sb_has_blkzoned(sbi->sb)) { in f2fs_scan_devices()
2683 f2fs_msg(sbi->sb, KERN_ERR, in f2fs_scan_devices()
2688 if (init_blkz_info(sbi, i)) { in f2fs_scan_devices()
2689 f2fs_msg(sbi->sb, KERN_ERR, in f2fs_scan_devices()
2695 f2fs_msg(sbi->sb, KERN_INFO, in f2fs_scan_devices()
2705 f2fs_msg(sbi->sb, KERN_INFO, in f2fs_scan_devices()
2711 f2fs_msg(sbi->sb, KERN_INFO, in f2fs_scan_devices()
2712 "IO Block Size: %8d KB", F2FS_IO_SIZE_KB(sbi)); in f2fs_scan_devices()
2716 static void f2fs_tuning_parameters(struct f2fs_sb_info *sbi) in f2fs_tuning_parameters() argument
2718 struct f2fs_sm_info *sm_i = SM_I(sbi); in f2fs_tuning_parameters()
2722 F2FS_OPTION(sbi).alloc_mode = ALLOC_MODE_REUSE; in f2fs_tuning_parameters()
2727 sbi->readdir_ra = 1; in f2fs_tuning_parameters()
2732 struct f2fs_sb_info *sbi; in f2fs_fill_super() local
2748 sbi = kzalloc(sizeof(struct f2fs_sb_info), GFP_KERNEL); in f2fs_fill_super()
2749 if (!sbi) in f2fs_fill_super()
2752 sbi->sb = sb; in f2fs_fill_super()
2755 sbi->s_chksum_driver = crypto_alloc_shash("crc32", 0, 0); in f2fs_fill_super()
2756 if (IS_ERR(sbi->s_chksum_driver)) { in f2fs_fill_super()
2758 err = PTR_ERR(sbi->s_chksum_driver); in f2fs_fill_super()
2759 sbi->s_chksum_driver = NULL; in f2fs_fill_super()
2769 err = read_raw_super_block(sbi, &raw_super, &valid_super_block, in f2fs_fill_super()
2774 sb->s_fs_info = sbi; in f2fs_fill_super()
2775 sbi->raw_super = raw_super; in f2fs_fill_super()
2779 sbi->s_chksum_seed = f2fs_chksum(sbi, ~0, raw_super->uuid, in f2fs_fill_super()
2795 default_options(sbi); in f2fs_fill_super()
2807 sbi->max_file_blocks = max_file_blocks(); in f2fs_fill_super()
2808 sb->s_maxbytes = sbi->max_file_blocks << in f2fs_fill_super()
2811 get_random_bytes(&sbi->s_next_generation, sizeof(u32)); in f2fs_fill_super()
2821 if (f2fs_sb_has_quota_ino(sbi->sb)) { in f2fs_fill_super()
2823 if (f2fs_qf_ino(sbi->sb, i)) in f2fs_fill_super()
2824 sbi->nquota_files++; in f2fs_fill_super()
2838 (test_opt(sbi, POSIX_ACL) ? SB_POSIXACL : 0); in f2fs_fill_super()
2843 sbi->valid_super_block = valid_super_block; in f2fs_fill_super()
2844 mutex_init(&sbi->gc_mutex); in f2fs_fill_super()
2845 mutex_init(&sbi->writepages); in f2fs_fill_super()
2846 mutex_init(&sbi->cp_mutex); in f2fs_fill_super()
2847 init_rwsem(&sbi->node_write); in f2fs_fill_super()
2848 init_rwsem(&sbi->node_change); in f2fs_fill_super()
2851 set_sbi_flag(sbi, SBI_POR_DOING); in f2fs_fill_super()
2852 spin_lock_init(&sbi->stat_lock); in f2fs_fill_super()
2855 spin_lock_init(&sbi->iostat_lock); in f2fs_fill_super()
2856 sbi->iostat_enable = false; in f2fs_fill_super()
2862 sbi->write_io[i] = in f2fs_fill_super()
2863 f2fs_kmalloc(sbi, in f2fs_fill_super()
2867 if (!sbi->write_io[i]) { in f2fs_fill_super()
2873 init_rwsem(&sbi->write_io[i][j].io_rwsem); in f2fs_fill_super()
2874 sbi->write_io[i][j].sbi = sbi; in f2fs_fill_super()
2875 sbi->write_io[i][j].bio = NULL; in f2fs_fill_super()
2876 spin_lock_init(&sbi->write_io[i][j].io_lock); in f2fs_fill_super()
2877 INIT_LIST_HEAD(&sbi->write_io[i][j].io_list); in f2fs_fill_super()
2881 init_rwsem(&sbi->cp_rwsem); in f2fs_fill_super()
2882 init_waitqueue_head(&sbi->cp_wait); in f2fs_fill_super()
2883 init_sb_info(sbi); in f2fs_fill_super()
2885 err = init_percpu_info(sbi); in f2fs_fill_super()
2889 if (F2FS_IO_SIZE(sbi) > 1) { in f2fs_fill_super()
2890 sbi->write_io_dummy = in f2fs_fill_super()
2891 mempool_create_page_pool(2 * (F2FS_IO_SIZE(sbi) - 1), 0); in f2fs_fill_super()
2892 if (!sbi->write_io_dummy) { in f2fs_fill_super()
2899 sbi->meta_inode = f2fs_iget(sb, F2FS_META_INO(sbi)); in f2fs_fill_super()
2900 if (IS_ERR(sbi->meta_inode)) { in f2fs_fill_super()
2902 err = PTR_ERR(sbi->meta_inode); in f2fs_fill_super()
2906 err = f2fs_get_valid_checkpoint(sbi); in f2fs_fill_super()
2913 err = f2fs_scan_devices(sbi); in f2fs_fill_super()
2919 sbi->total_valid_node_count = in f2fs_fill_super()
2920 le32_to_cpu(sbi->ckpt->valid_node_count); in f2fs_fill_super()
2921 percpu_counter_set(&sbi->total_valid_inode_count, in f2fs_fill_super()
2922 le32_to_cpu(sbi->ckpt->valid_inode_count)); in f2fs_fill_super()
2923 sbi->user_block_count = le64_to_cpu(sbi->ckpt->user_block_count); in f2fs_fill_super()
2924 sbi->total_valid_block_count = in f2fs_fill_super()
2925 le64_to_cpu(sbi->ckpt->valid_block_count); in f2fs_fill_super()
2926 sbi->last_valid_block_count = sbi->total_valid_block_count; in f2fs_fill_super()
2927 sbi->reserved_blocks = 0; in f2fs_fill_super()
2928 sbi->current_reserved_blocks = 0; in f2fs_fill_super()
2929 limit_reserve_root(sbi); in f2fs_fill_super()
2932 INIT_LIST_HEAD(&sbi->inode_list[i]); in f2fs_fill_super()
2933 spin_lock_init(&sbi->inode_lock[i]); in f2fs_fill_super()
2936 f2fs_init_extent_cache_info(sbi); in f2fs_fill_super()
2938 f2fs_init_ino_entry_info(sbi); in f2fs_fill_super()
2940 f2fs_init_fsync_node_info(sbi); in f2fs_fill_super()
2943 err = f2fs_build_segment_manager(sbi); in f2fs_fill_super()
2949 err = f2fs_build_node_manager(sbi); in f2fs_fill_super()
2958 sbi->sectors_written_start = in f2fs_fill_super()
2963 seg_i = CURSEG_I(sbi, CURSEG_HOT_NODE); in f2fs_fill_super()
2964 if (__exist_node_summaries(sbi)) in f2fs_fill_super()
2965 sbi->kbytes_written = in f2fs_fill_super()
2968 f2fs_build_gc_manager(sbi); in f2fs_fill_super()
2971 sbi->node_inode = f2fs_iget(sb, F2FS_NODE_INO(sbi)); in f2fs_fill_super()
2972 if (IS_ERR(sbi->node_inode)) { in f2fs_fill_super()
2974 err = PTR_ERR(sbi->node_inode); in f2fs_fill_super()
2978 err = f2fs_build_stats(sbi); in f2fs_fill_super()
2983 root = f2fs_iget(sb, F2FS_ROOT_INO(sbi)); in f2fs_fill_super()
3002 err = f2fs_register_sysfs(sbi); in f2fs_fill_super()
3018 err = f2fs_recover_orphan_inodes(sbi); in f2fs_fill_super()
3023 if (!test_opt(sbi, DISABLE_ROLL_FORWARD)) { in f2fs_fill_super()
3029 !is_set_ckpt_flags(sbi, CP_UMOUNT_FLAG)) { in f2fs_fill_super()
3035 set_sbi_flag(sbi, SBI_NEED_FSCK); in f2fs_fill_super()
3040 err = f2fs_recover_fsync_data(sbi, false); in f2fs_fill_super()
3048 err = f2fs_recover_fsync_data(sbi, true); in f2fs_fill_super()
3059 clear_sbi_flag(sbi, SBI_POR_DOING); in f2fs_fill_super()
3065 if (test_opt(sbi, BG_GC) && !f2fs_readonly(sb)) { in f2fs_fill_super()
3067 err = f2fs_start_gc_thread(sbi); in f2fs_fill_super()
3075 err = f2fs_commit_super(sbi, true); in f2fs_fill_super()
3078 sbi->valid_super_block ? 1 : 2, err); in f2fs_fill_super()
3081 f2fs_join_shrinker(sbi); in f2fs_fill_super()
3083 f2fs_tuning_parameters(sbi); in f2fs_fill_super()
3085 f2fs_msg(sbi->sb, KERN_NOTICE, "Mounted with checkpoint version = %llx", in f2fs_fill_super()
3086 cur_cp_version(F2FS_CKPT(sbi))); in f2fs_fill_super()
3087 f2fs_update_time(sbi, CP_TIME); in f2fs_fill_super()
3088 f2fs_update_time(sbi, REQ_TIME); in f2fs_fill_super()
3094 f2fs_quota_off_umount(sbi->sb); in f2fs_fill_super()
3096 f2fs_sync_inode_meta(sbi); in f2fs_fill_super()
3103 truncate_inode_pages_final(META_MAPPING(sbi)); in f2fs_fill_super()
3107 f2fs_unregister_sysfs(sbi); in f2fs_fill_super()
3112 f2fs_destroy_stats(sbi); in f2fs_fill_super()
3114 f2fs_release_ino_entry(sbi, true); in f2fs_fill_super()
3115 truncate_inode_pages_final(NODE_MAPPING(sbi)); in f2fs_fill_super()
3116 iput(sbi->node_inode); in f2fs_fill_super()
3118 f2fs_destroy_node_manager(sbi); in f2fs_fill_super()
3120 f2fs_destroy_segment_manager(sbi); in f2fs_fill_super()
3122 destroy_device_list(sbi); in f2fs_fill_super()
3123 kfree(sbi->ckpt); in f2fs_fill_super()
3125 make_bad_inode(sbi->meta_inode); in f2fs_fill_super()
3126 iput(sbi->meta_inode); in f2fs_fill_super()
3128 mempool_destroy(sbi->write_io_dummy); in f2fs_fill_super()
3130 destroy_percpu_info(sbi); in f2fs_fill_super()
3133 kfree(sbi->write_io[i]); in f2fs_fill_super()
3137 kfree(F2FS_OPTION(sbi).s_qf_names[i]); in f2fs_fill_super()
3143 if (sbi->s_chksum_driver) in f2fs_fill_super()
3144 crypto_free_shash(sbi->s_chksum_driver); in f2fs_fill_super()
3145 kfree(sbi); in f2fs_fill_super()
3165 struct f2fs_sb_info *sbi = F2FS_SB(sb); in kill_f2fs_super() local
3167 set_sbi_flag(sbi, SBI_IS_CLOSE); in kill_f2fs_super()
3168 f2fs_stop_gc_thread(sbi); in kill_f2fs_super()
3169 f2fs_stop_discard_thread(sbi); in kill_f2fs_super()
3171 if (is_sbi_flag_set(sbi, SBI_IS_DIRTY) || in kill_f2fs_super()
3172 !is_set_ckpt_flags(sbi, CP_UMOUNT_FLAG)) { in kill_f2fs_super()
3176 f2fs_write_checkpoint(sbi, &cpc); in kill_f2fs_super()