Lines Matching refs:sbi
24 #define f2fs_bug_on(sbi, condition) BUG_ON(condition) argument
27 #define f2fs_bug_on(sbi, condition) \ argument
31 set_sbi_flag(sbi, SBI_NEED_FSCK); \
55 #define clear_opt(sbi, option) (sbi->mount_opt.opt &= ~F2FS_MOUNT_##option) argument
56 #define set_opt(sbi, option) (sbi->mount_opt.opt |= F2FS_MOUNT_##option) argument
57 #define test_opt(sbi, option) (sbi->mount_opt.opt & F2FS_MOUNT_##option) argument
111 #define BATCHED_TRIM_SEGMENTS(sbi) \ argument
112 (SM_I(sbi)->trim_sections * (sbi)->segs_per_sec)
581 struct f2fs_sb_info *sbi; /* f2fs superblock */ member
734 static inline struct f2fs_super_block *F2FS_RAW_SUPER(struct f2fs_sb_info *sbi) in F2FS_RAW_SUPER() argument
736 return (struct f2fs_super_block *)(sbi->raw_super); in F2FS_RAW_SUPER()
739 static inline struct f2fs_checkpoint *F2FS_CKPT(struct f2fs_sb_info *sbi) in F2FS_CKPT() argument
741 return (struct f2fs_checkpoint *)(sbi->ckpt); in F2FS_CKPT()
754 static inline struct f2fs_nm_info *NM_I(struct f2fs_sb_info *sbi) in NM_I() argument
756 return (struct f2fs_nm_info *)(sbi->nm_info); in NM_I()
759 static inline struct f2fs_sm_info *SM_I(struct f2fs_sb_info *sbi) in SM_I() argument
761 return (struct f2fs_sm_info *)(sbi->sm_info); in SM_I()
764 static inline struct sit_info *SIT_I(struct f2fs_sb_info *sbi) in SIT_I() argument
766 return (struct sit_info *)(SM_I(sbi)->sit_info); in SIT_I()
769 static inline struct free_segmap_info *FREE_I(struct f2fs_sb_info *sbi) in FREE_I() argument
771 return (struct free_segmap_info *)(SM_I(sbi)->free_info); in FREE_I()
774 static inline struct dirty_seglist_info *DIRTY_I(struct f2fs_sb_info *sbi) in DIRTY_I() argument
776 return (struct dirty_seglist_info *)(SM_I(sbi)->dirty_info); in DIRTY_I()
779 static inline struct address_space *META_MAPPING(struct f2fs_sb_info *sbi) in META_MAPPING() argument
781 return sbi->meta_inode->i_mapping; in META_MAPPING()
784 static inline struct address_space *NODE_MAPPING(struct f2fs_sb_info *sbi) in NODE_MAPPING() argument
786 return sbi->node_inode->i_mapping; in NODE_MAPPING()
789 static inline bool is_sbi_flag_set(struct f2fs_sb_info *sbi, unsigned int type) in is_sbi_flag_set() argument
791 return sbi->s_flag & (0x01 << type); in is_sbi_flag_set()
794 static inline void set_sbi_flag(struct f2fs_sb_info *sbi, unsigned int type) in set_sbi_flag() argument
796 sbi->s_flag |= (0x01 << type); in set_sbi_flag()
799 static inline void clear_sbi_flag(struct f2fs_sb_info *sbi, unsigned int type) in clear_sbi_flag() argument
801 sbi->s_flag &= ~(0x01 << type); in clear_sbi_flag()
829 static inline void f2fs_lock_op(struct f2fs_sb_info *sbi) in f2fs_lock_op() argument
831 down_read(&sbi->cp_rwsem); in f2fs_lock_op()
834 static inline void f2fs_unlock_op(struct f2fs_sb_info *sbi) in f2fs_unlock_op() argument
836 up_read(&sbi->cp_rwsem); in f2fs_unlock_op()
839 static inline void f2fs_lock_all(struct f2fs_sb_info *sbi) in f2fs_lock_all() argument
841 f2fs_down_write(&sbi->cp_rwsem, &sbi->cp_mutex); in f2fs_lock_all()
844 static inline void f2fs_unlock_all(struct f2fs_sb_info *sbi) in f2fs_unlock_all() argument
846 up_write(&sbi->cp_rwsem); in f2fs_unlock_all()
849 static inline int __get_cp_reason(struct f2fs_sb_info *sbi) in __get_cp_reason() argument
853 if (test_opt(sbi, FASTBOOT)) in __get_cp_reason()
855 if (is_sbi_flag_set(sbi, SBI_IS_CLOSE)) in __get_cp_reason()
865 static inline bool __exist_node_summaries(struct f2fs_sb_info *sbi) in __exist_node_summaries() argument
867 return (is_set_ckpt_flags(F2FS_CKPT(sbi), CP_UMOUNT_FLAG) || in __exist_node_summaries()
868 is_set_ckpt_flags(F2FS_CKPT(sbi), CP_FASTBOOT_FLAG)); in __exist_node_summaries()
874 static inline int check_nid_range(struct f2fs_sb_info *sbi, nid_t nid) in check_nid_range() argument
876 if (unlikely(nid < F2FS_ROOT_INO(sbi))) in check_nid_range()
878 if (unlikely(nid >= NM_I(sbi)->max_nid)) in check_nid_range()
901 static inline bool inc_valid_block_count(struct f2fs_sb_info *sbi, in inc_valid_block_count() argument
906 spin_lock(&sbi->stat_lock); in inc_valid_block_count()
908 sbi->total_valid_block_count + (block_t)count; in inc_valid_block_count()
909 if (unlikely(valid_block_count > sbi->user_block_count)) { in inc_valid_block_count()
910 spin_unlock(&sbi->stat_lock); in inc_valid_block_count()
914 sbi->total_valid_block_count = valid_block_count; in inc_valid_block_count()
915 sbi->alloc_valid_block_count += (block_t)count; in inc_valid_block_count()
916 spin_unlock(&sbi->stat_lock); in inc_valid_block_count()
920 static inline void dec_valid_block_count(struct f2fs_sb_info *sbi, in dec_valid_block_count() argument
924 spin_lock(&sbi->stat_lock); in dec_valid_block_count()
925 f2fs_bug_on(sbi, sbi->total_valid_block_count < (block_t) count); in dec_valid_block_count()
926 f2fs_bug_on(sbi, inode->i_blocks < count); in dec_valid_block_count()
928 sbi->total_valid_block_count -= (block_t)count; in dec_valid_block_count()
929 spin_unlock(&sbi->stat_lock); in dec_valid_block_count()
932 static inline void inc_page_count(struct f2fs_sb_info *sbi, int count_type) in inc_page_count() argument
934 atomic_inc(&sbi->nr_pages[count_type]); in inc_page_count()
935 set_sbi_flag(sbi, SBI_IS_DIRTY); in inc_page_count()
945 static inline void dec_page_count(struct f2fs_sb_info *sbi, int count_type) in dec_page_count() argument
947 atomic_dec(&sbi->nr_pages[count_type]); in dec_page_count()
961 static inline int get_pages(struct f2fs_sb_info *sbi, int count_type) in get_pages() argument
963 return atomic_read(&sbi->nr_pages[count_type]); in get_pages()
971 static inline int get_blocktype_secs(struct f2fs_sb_info *sbi, int block_type) in get_blocktype_secs() argument
973 unsigned int pages_per_sec = sbi->segs_per_sec * in get_blocktype_secs()
974 (1 << sbi->log_blocks_per_seg); in get_blocktype_secs()
975 return ((get_pages(sbi, block_type) + pages_per_sec - 1) in get_blocktype_secs()
976 >> sbi->log_blocks_per_seg) / sbi->segs_per_sec; in get_blocktype_secs()
979 static inline block_t valid_user_blocks(struct f2fs_sb_info *sbi) in valid_user_blocks() argument
981 return sbi->total_valid_block_count; in valid_user_blocks()
984 static inline unsigned long __bitmap_size(struct f2fs_sb_info *sbi, int flag) in __bitmap_size() argument
986 struct f2fs_checkpoint *ckpt = F2FS_CKPT(sbi); in __bitmap_size()
997 static inline block_t __cp_payload(struct f2fs_sb_info *sbi) in __cp_payload() argument
999 return le32_to_cpu(F2FS_RAW_SUPER(sbi)->cp_payload); in __cp_payload()
1002 static inline void *__bitmap_ptr(struct f2fs_sb_info *sbi, int flag) in __bitmap_ptr() argument
1004 struct f2fs_checkpoint *ckpt = F2FS_CKPT(sbi); in __bitmap_ptr()
1007 if (__cp_payload(sbi) > 0) { in __bitmap_ptr()
1019 static inline block_t __start_cp_addr(struct f2fs_sb_info *sbi) in __start_cp_addr() argument
1022 struct f2fs_checkpoint *ckpt = F2FS_CKPT(sbi); in __start_cp_addr()
1025 start_addr = le32_to_cpu(F2FS_RAW_SUPER(sbi)->cp_blkaddr); in __start_cp_addr()
1032 start_addr += sbi->blocks_per_seg; in __start_cp_addr()
1037 static inline block_t __start_sum_addr(struct f2fs_sb_info *sbi) in __start_sum_addr() argument
1039 return le32_to_cpu(F2FS_CKPT(sbi)->cp_pack_start_sum); in __start_sum_addr()
1042 static inline bool inc_valid_node_count(struct f2fs_sb_info *sbi, in inc_valid_node_count() argument
1048 spin_lock(&sbi->stat_lock); in inc_valid_node_count()
1050 valid_block_count = sbi->total_valid_block_count + 1; in inc_valid_node_count()
1051 if (unlikely(valid_block_count > sbi->user_block_count)) { in inc_valid_node_count()
1052 spin_unlock(&sbi->stat_lock); in inc_valid_node_count()
1056 valid_node_count = sbi->total_valid_node_count + 1; in inc_valid_node_count()
1057 if (unlikely(valid_node_count > sbi->total_node_count)) { in inc_valid_node_count()
1058 spin_unlock(&sbi->stat_lock); in inc_valid_node_count()
1065 sbi->alloc_valid_block_count++; in inc_valid_node_count()
1066 sbi->total_valid_node_count++; in inc_valid_node_count()
1067 sbi->total_valid_block_count++; in inc_valid_node_count()
1068 spin_unlock(&sbi->stat_lock); in inc_valid_node_count()
1073 static inline void dec_valid_node_count(struct f2fs_sb_info *sbi, in dec_valid_node_count() argument
1076 spin_lock(&sbi->stat_lock); in dec_valid_node_count()
1078 f2fs_bug_on(sbi, !sbi->total_valid_block_count); in dec_valid_node_count()
1079 f2fs_bug_on(sbi, !sbi->total_valid_node_count); in dec_valid_node_count()
1080 f2fs_bug_on(sbi, !inode->i_blocks); in dec_valid_node_count()
1083 sbi->total_valid_node_count--; in dec_valid_node_count()
1084 sbi->total_valid_block_count--; in dec_valid_node_count()
1086 spin_unlock(&sbi->stat_lock); in dec_valid_node_count()
1089 static inline unsigned int valid_node_count(struct f2fs_sb_info *sbi) in valid_node_count() argument
1091 return sbi->total_valid_node_count; in valid_node_count()
1094 static inline void inc_valid_inode_count(struct f2fs_sb_info *sbi) in inc_valid_inode_count() argument
1096 spin_lock(&sbi->stat_lock); in inc_valid_inode_count()
1097 f2fs_bug_on(sbi, sbi->total_valid_inode_count == sbi->total_node_count); in inc_valid_inode_count()
1098 sbi->total_valid_inode_count++; in inc_valid_inode_count()
1099 spin_unlock(&sbi->stat_lock); in inc_valid_inode_count()
1102 static inline void dec_valid_inode_count(struct f2fs_sb_info *sbi) in dec_valid_inode_count() argument
1104 spin_lock(&sbi->stat_lock); in dec_valid_inode_count()
1105 f2fs_bug_on(sbi, !sbi->total_valid_inode_count); in dec_valid_inode_count()
1106 sbi->total_valid_inode_count--; in dec_valid_inode_count()
1107 spin_unlock(&sbi->stat_lock); in dec_valid_inode_count()
1110 static inline unsigned int valid_inode_count(struct f2fs_sb_info *sbi) in valid_inode_count() argument
1112 return sbi->total_valid_inode_count; in valid_inode_count()
1399 static inline bool f2fs_cp_error(struct f2fs_sb_info *sbi) in f2fs_cp_error() argument
1401 return is_set_ckpt_flags(sbi->ckpt, CP_ERROR_FLAG); in f2fs_cp_error()
1404 static inline void f2fs_stop_checkpoint(struct f2fs_sb_info *sbi) in f2fs_stop_checkpoint() argument
1406 set_ckpt_flags(sbi->ckpt, CP_ERROR_FLAG); in f2fs_stop_checkpoint()
1407 sbi->sb->s_flags |= MS_RDONLY; in f2fs_stop_checkpoint()
1654 struct f2fs_sb_info *sbi; member
1682 static inline struct f2fs_stat_info *F2FS_STAT(struct f2fs_sb_info *sbi) in F2FS_STAT() argument
1684 return (struct f2fs_stat_info *)sbi->stat_info; in F2FS_STAT()
1689 #define stat_inc_bggc_count(sbi) ((sbi)->bg_gc++) argument
1690 #define stat_inc_dirty_dir(sbi) ((sbi)->n_dirty_dirs++) argument
1691 #define stat_dec_dirty_dir(sbi) ((sbi)->n_dirty_dirs--) argument
1714 #define stat_inc_seg_type(sbi, curseg) \ argument
1715 ((sbi)->segment_count[(curseg)->alloc_type]++)
1716 #define stat_inc_block_count(sbi, curseg) \ argument
1717 ((sbi)->block_count[(curseg)->alloc_type]++)
1718 #define stat_inc_inplace_blocks(sbi) \ argument
1719 (atomic_inc(&(sbi)->inplace_count))
1720 #define stat_inc_seg_count(sbi, type, gc_type) \ argument
1722 struct f2fs_stat_info *si = F2FS_STAT(sbi); \
1736 #define stat_inc_data_blk_count(sbi, blks, gc_type) \ argument
1738 struct f2fs_stat_info *si = F2FS_STAT(sbi); \
1744 #define stat_inc_node_blk_count(sbi, blks, gc_type) \ argument
1746 struct f2fs_stat_info *si = F2FS_STAT(sbi); \
1760 #define stat_inc_dirty_dir(sbi) argument
1761 #define stat_dec_dirty_dir(sbi) argument
1768 #define stat_inc_seg_type(sbi, curseg) argument
1769 #define stat_inc_block_count(sbi, curseg) argument
1770 #define stat_inc_inplace_blocks(sbi) argument
1771 #define stat_inc_seg_count(sbi, type, gc_type) argument
1773 #define stat_inc_data_blk_count(sbi, blks, gc_type) argument
1774 #define stat_inc_node_blk_count(sbi, blks, gc_type) argument
1776 static inline int f2fs_build_stats(struct f2fs_sb_info *sbi) { return 0; } in f2fs_build_stats() argument
1777 static inline void f2fs_destroy_stats(struct f2fs_sb_info *sbi) { } in f2fs_destroy_stats() argument