Lines Matching refs:sbi
32 #define f2fs_bug_on(sbi, condition) BUG_ON(condition) argument
34 #define f2fs_bug_on(sbi, condition) \ argument
37 set_sbi_flag(sbi, SBI_NEED_FSCK); \
109 #define F2FS_OPTION(sbi) ((sbi)->mount_opt) argument
110 #define clear_opt(sbi, option) (F2FS_OPTION(sbi).opt &= ~F2FS_MOUNT_##option) argument
111 #define set_opt(sbi, option) (F2FS_OPTION(sbi).opt |= F2FS_MOUNT_##option) argument
112 #define test_opt(sbi, option) (F2FS_OPTION(sbi).opt & F2FS_MOUNT_##option) argument
203 #define F2FS_HAS_FEATURE(sbi, mask) __F2FS_HAS_FEATURE(sbi->raw_super, mask) argument
1179 struct f2fs_sb_info *sbi; /* f2fs_sb_info pointer */ member
1213 struct f2fs_sb_info *sbi; /* f2fs superblock */ member
1224 #define FDEV(i) (sbi->devs[i])
1776 #define time_to_inject(sbi, type) __time_to_inject(sbi, type, __func__, \ argument
1778 static inline bool __time_to_inject(struct f2fs_sb_info *sbi, int type, in __time_to_inject() argument
1781 struct f2fs_fault_info *ffi = &F2FS_OPTION(sbi).fault_info; in __time_to_inject()
1793 KERN_INFO, sbi->sb->s_id, f2fs_fault_name[type], in __time_to_inject()
1800 static inline bool time_to_inject(struct f2fs_sb_info *sbi, int type) in time_to_inject() argument
1812 static inline bool f2fs_is_multi_device(struct f2fs_sb_info *sbi) in f2fs_is_multi_device() argument
1814 return sbi->s_ndevs > 1; in f2fs_is_multi_device()
1817 static inline void f2fs_update_time(struct f2fs_sb_info *sbi, int type) in f2fs_update_time() argument
1821 sbi->last_time[type] = now; in f2fs_update_time()
1825 sbi->last_time[DISCARD_TIME] = now; in f2fs_update_time()
1826 sbi->last_time[GC_TIME] = now; in f2fs_update_time()
1830 static inline bool f2fs_time_over(struct f2fs_sb_info *sbi, int type) in f2fs_time_over() argument
1832 unsigned long interval = sbi->interval_time[type] * HZ; in f2fs_time_over()
1834 return time_after(jiffies, sbi->last_time[type] + interval); in f2fs_time_over()
1837 static inline unsigned int f2fs_time_to_wait(struct f2fs_sb_info *sbi, in f2fs_time_to_wait() argument
1840 unsigned long interval = sbi->interval_time[type] * HZ; in f2fs_time_to_wait()
1844 delta = (sbi->last_time[type] + interval) - jiffies; in f2fs_time_to_wait()
1854 static inline u32 __f2fs_crc32(struct f2fs_sb_info *sbi, u32 crc, in __f2fs_crc32() argument
1863 BUG_ON(crypto_shash_descsize(sbi->s_chksum_driver) != sizeof(desc.ctx)); in __f2fs_crc32()
1865 desc.shash.tfm = sbi->s_chksum_driver; in __f2fs_crc32()
1874 static inline u32 f2fs_crc32(struct f2fs_sb_info *sbi, const void *address, in f2fs_crc32() argument
1877 return __f2fs_crc32(sbi, F2FS_SUPER_MAGIC, address, length); in f2fs_crc32()
1880 static inline bool f2fs_crc_valid(struct f2fs_sb_info *sbi, __u32 blk_crc, in f2fs_crc_valid() argument
1883 return f2fs_crc32(sbi, buf, buf_size) == blk_crc; in f2fs_crc_valid()
1886 static inline u32 f2fs_chksum(struct f2fs_sb_info *sbi, u32 crc, in f2fs_chksum() argument
1889 return __f2fs_crc32(sbi, crc, address, length); in f2fs_chksum()
1917 static inline struct f2fs_super_block *F2FS_RAW_SUPER(struct f2fs_sb_info *sbi) in F2FS_RAW_SUPER() argument
1919 return (struct f2fs_super_block *)(sbi->raw_super); in F2FS_RAW_SUPER()
1922 static inline struct f2fs_checkpoint *F2FS_CKPT(struct f2fs_sb_info *sbi) in F2FS_CKPT() argument
1924 return (struct f2fs_checkpoint *)(sbi->ckpt); in F2FS_CKPT()
1937 static inline struct f2fs_nm_info *NM_I(struct f2fs_sb_info *sbi) in NM_I() argument
1939 return (struct f2fs_nm_info *)(sbi->nm_info); in NM_I()
1942 static inline struct f2fs_sm_info *SM_I(struct f2fs_sb_info *sbi) in SM_I() argument
1944 return (struct f2fs_sm_info *)(sbi->sm_info); in SM_I()
1947 static inline struct sit_info *SIT_I(struct f2fs_sb_info *sbi) in SIT_I() argument
1949 return (struct sit_info *)(SM_I(sbi)->sit_info); in SIT_I()
1952 static inline struct free_segmap_info *FREE_I(struct f2fs_sb_info *sbi) in FREE_I() argument
1954 return (struct free_segmap_info *)(SM_I(sbi)->free_info); in FREE_I()
1957 static inline struct dirty_seglist_info *DIRTY_I(struct f2fs_sb_info *sbi) in DIRTY_I() argument
1959 return (struct dirty_seglist_info *)(SM_I(sbi)->dirty_info); in DIRTY_I()
1962 static inline struct address_space *META_MAPPING(struct f2fs_sb_info *sbi) in META_MAPPING() argument
1964 return sbi->meta_inode->i_mapping; in META_MAPPING()
1967 static inline struct address_space *NODE_MAPPING(struct f2fs_sb_info *sbi) in NODE_MAPPING() argument
1969 return sbi->node_inode->i_mapping; in NODE_MAPPING()
1972 static inline bool is_sbi_flag_set(struct f2fs_sb_info *sbi, unsigned int type) in is_sbi_flag_set() argument
1974 return test_bit(type, &sbi->s_flag); in is_sbi_flag_set()
1977 static inline void set_sbi_flag(struct f2fs_sb_info *sbi, unsigned int type) in set_sbi_flag() argument
1979 set_bit(type, &sbi->s_flag); in set_sbi_flag()
1982 static inline void clear_sbi_flag(struct f2fs_sb_info *sbi, unsigned int type) in clear_sbi_flag() argument
1984 clear_bit(type, &sbi->s_flag); in clear_sbi_flag()
2012 static inline bool is_set_ckpt_flags(struct f2fs_sb_info *sbi, unsigned int f) in is_set_ckpt_flags() argument
2014 return __is_set_ckpt_flags(F2FS_CKPT(sbi), f); in is_set_ckpt_flags()
2026 static inline void set_ckpt_flags(struct f2fs_sb_info *sbi, unsigned int f) in set_ckpt_flags() argument
2030 spin_lock_irqsave(&sbi->cp_lock, flags); in set_ckpt_flags()
2031 __set_ckpt_flags(F2FS_CKPT(sbi), f); in set_ckpt_flags()
2032 spin_unlock_irqrestore(&sbi->cp_lock, flags); in set_ckpt_flags()
2044 static inline void clear_ckpt_flags(struct f2fs_sb_info *sbi, unsigned int f) in clear_ckpt_flags() argument
2048 spin_lock_irqsave(&sbi->cp_lock, flags); in clear_ckpt_flags()
2049 __clear_ckpt_flags(F2FS_CKPT(sbi), f); in clear_ckpt_flags()
2050 spin_unlock_irqrestore(&sbi->cp_lock, flags); in clear_ckpt_flags()
2125 static inline void f2fs_lock_op(struct f2fs_sb_info *sbi) in f2fs_lock_op() argument
2127 f2fs_down_read(&sbi->cp_rwsem); in f2fs_lock_op()
2130 static inline int f2fs_trylock_op(struct f2fs_sb_info *sbi) in f2fs_trylock_op() argument
2132 if (time_to_inject(sbi, FAULT_LOCK_OP)) in f2fs_trylock_op()
2134 return f2fs_down_read_trylock(&sbi->cp_rwsem); in f2fs_trylock_op()
2137 static inline void f2fs_unlock_op(struct f2fs_sb_info *sbi) in f2fs_unlock_op() argument
2139 f2fs_up_read(&sbi->cp_rwsem); in f2fs_unlock_op()
2142 static inline void f2fs_lock_all(struct f2fs_sb_info *sbi) in f2fs_lock_all() argument
2144 f2fs_down_write(&sbi->cp_rwsem); in f2fs_lock_all()
2147 static inline void f2fs_unlock_all(struct f2fs_sb_info *sbi) in f2fs_unlock_all() argument
2149 f2fs_up_write(&sbi->cp_rwsem); in f2fs_unlock_all()
2152 static inline int __get_cp_reason(struct f2fs_sb_info *sbi) in __get_cp_reason() argument
2156 if (test_opt(sbi, FASTBOOT)) in __get_cp_reason()
2158 if (is_sbi_flag_set(sbi, SBI_IS_CLOSE)) in __get_cp_reason()
2168 static inline bool __exist_node_summaries(struct f2fs_sb_info *sbi) in __exist_node_summaries() argument
2170 return (is_set_ckpt_flags(sbi, CP_UMOUNT_FLAG) || in __exist_node_summaries()
2171 is_set_ckpt_flags(sbi, CP_FASTBOOT_FLAG)); in __exist_node_summaries()
2189 static inline bool __allow_reserved_blocks(struct f2fs_sb_info *sbi, in __allow_reserved_blocks() argument
2194 if (!test_opt(sbi, RESERVE_ROOT)) in __allow_reserved_blocks()
2198 if (uid_eq(F2FS_OPTION(sbi).s_resuid, current_fsuid())) in __allow_reserved_blocks()
2200 if (!gid_eq(F2FS_OPTION(sbi).s_resgid, GLOBAL_ROOT_GID) && in __allow_reserved_blocks()
2201 in_group_p(F2FS_OPTION(sbi).s_resgid)) in __allow_reserved_blocks()
2209 static inline int inc_valid_block_count(struct f2fs_sb_info *sbi, in inc_valid_block_count() argument
2220 if (time_to_inject(sbi, FAULT_BLOCK)) { in inc_valid_block_count()
2229 percpu_counter_add(&sbi->alloc_valid_block_count, (*count)); in inc_valid_block_count()
2231 spin_lock(&sbi->stat_lock); in inc_valid_block_count()
2232 sbi->total_valid_block_count += (block_t)(*count); in inc_valid_block_count()
2233 avail_user_block_count = sbi->user_block_count - in inc_valid_block_count()
2234 sbi->current_reserved_blocks; in inc_valid_block_count()
2236 if (!__allow_reserved_blocks(sbi, inode, true)) in inc_valid_block_count()
2237 avail_user_block_count -= F2FS_OPTION(sbi).root_reserved_blocks; in inc_valid_block_count()
2239 if (F2FS_IO_ALIGNED(sbi)) in inc_valid_block_count()
2240 avail_user_block_count -= sbi->blocks_per_seg * in inc_valid_block_count()
2241 SM_I(sbi)->additional_reserved_segments; in inc_valid_block_count()
2243 if (unlikely(is_sbi_flag_set(sbi, SBI_CP_DISABLED))) { in inc_valid_block_count()
2244 if (avail_user_block_count > sbi->unusable_block_count) in inc_valid_block_count()
2245 avail_user_block_count -= sbi->unusable_block_count; in inc_valid_block_count()
2249 if (unlikely(sbi->total_valid_block_count > avail_user_block_count)) { in inc_valid_block_count()
2250 diff = sbi->total_valid_block_count - avail_user_block_count; in inc_valid_block_count()
2255 sbi->total_valid_block_count -= diff; in inc_valid_block_count()
2257 spin_unlock(&sbi->stat_lock); in inc_valid_block_count()
2261 spin_unlock(&sbi->stat_lock); in inc_valid_block_count()
2264 percpu_counter_sub(&sbi->alloc_valid_block_count, release); in inc_valid_block_count()
2271 percpu_counter_sub(&sbi->alloc_valid_block_count, release); in inc_valid_block_count()
2278 void f2fs_printk(struct f2fs_sb_info *sbi, const char *fmt, ...);
2280 #define f2fs_err(sbi, fmt, ...) \ argument
2281 f2fs_printk(sbi, KERN_ERR fmt, ##__VA_ARGS__)
2282 #define f2fs_warn(sbi, fmt, ...) \ argument
2283 f2fs_printk(sbi, KERN_WARNING fmt, ##__VA_ARGS__)
2284 #define f2fs_notice(sbi, fmt, ...) \ argument
2285 f2fs_printk(sbi, KERN_NOTICE fmt, ##__VA_ARGS__)
2286 #define f2fs_info(sbi, fmt, ...) \ argument
2287 f2fs_printk(sbi, KERN_INFO fmt, ##__VA_ARGS__)
2288 #define f2fs_debug(sbi, fmt, ...) \ argument
2289 f2fs_printk(sbi, KERN_DEBUG fmt, ##__VA_ARGS__)
2365 static inline void dec_valid_block_count(struct f2fs_sb_info *sbi, in dec_valid_block_count() argument
2371 spin_lock(&sbi->stat_lock); in dec_valid_block_count()
2372 f2fs_bug_on(sbi, sbi->total_valid_block_count < (block_t) count); in dec_valid_block_count()
2373 sbi->total_valid_block_count -= (block_t)count; in dec_valid_block_count()
2374 if (sbi->reserved_blocks && in dec_valid_block_count()
2375 sbi->current_reserved_blocks < sbi->reserved_blocks) in dec_valid_block_count()
2376 sbi->current_reserved_blocks = min(sbi->reserved_blocks, in dec_valid_block_count()
2377 sbi->current_reserved_blocks + count); in dec_valid_block_count()
2378 spin_unlock(&sbi->stat_lock); in dec_valid_block_count()
2380 f2fs_warn(sbi, "Inconsistent i_blocks, ino:%lu, iblocks:%llu, sectors:%llu", in dec_valid_block_count()
2384 set_sbi_flag(sbi, SBI_NEED_FSCK); in dec_valid_block_count()
2390 static inline void inc_page_count(struct f2fs_sb_info *sbi, int count_type) in inc_page_count() argument
2392 atomic_inc(&sbi->nr_pages[count_type]); in inc_page_count()
2399 set_sbi_flag(sbi, SBI_IS_DIRTY); in inc_page_count()
2411 static inline void dec_page_count(struct f2fs_sb_info *sbi, int count_type) in dec_page_count() argument
2413 atomic_dec(&sbi->nr_pages[count_type]); in dec_page_count()
2431 struct f2fs_sb_info *sbi = F2FS_I_SB(inode); in inc_atomic_write_cnt() local
2436 atomic64_inc(&sbi->current_atomic_write); in inc_atomic_write_cnt()
2437 current_write = atomic64_read(&sbi->current_atomic_write); in inc_atomic_write_cnt()
2438 if (current_write > sbi->peak_atomic_write) in inc_atomic_write_cnt()
2439 sbi->peak_atomic_write = current_write; in inc_atomic_write_cnt()
2444 struct f2fs_sb_info *sbi = F2FS_I_SB(inode); in release_atomic_write_cnt() local
2447 atomic64_sub(fi->atomic_write_cnt, &sbi->current_atomic_write); in release_atomic_write_cnt()
2451 static inline s64 get_pages(struct f2fs_sb_info *sbi, int count_type) in get_pages() argument
2453 return atomic_read(&sbi->nr_pages[count_type]); in get_pages()
2461 static inline int get_blocktype_secs(struct f2fs_sb_info *sbi, int block_type) in get_blocktype_secs() argument
2463 unsigned int pages_per_sec = sbi->segs_per_sec * sbi->blocks_per_seg; in get_blocktype_secs()
2464 unsigned int segs = (get_pages(sbi, block_type) + pages_per_sec - 1) >> in get_blocktype_secs()
2465 sbi->log_blocks_per_seg; in get_blocktype_secs()
2467 return segs / sbi->segs_per_sec; in get_blocktype_secs()
2470 static inline block_t valid_user_blocks(struct f2fs_sb_info *sbi) in valid_user_blocks() argument
2472 return sbi->total_valid_block_count; in valid_user_blocks()
2475 static inline block_t discard_blocks(struct f2fs_sb_info *sbi) in discard_blocks() argument
2477 return sbi->discard_blks; in discard_blocks()
2480 static inline unsigned long __bitmap_size(struct f2fs_sb_info *sbi, int flag) in __bitmap_size() argument
2482 struct f2fs_checkpoint *ckpt = F2FS_CKPT(sbi); in __bitmap_size()
2493 static inline block_t __cp_payload(struct f2fs_sb_info *sbi) in __cp_payload() argument
2495 return le32_to_cpu(F2FS_RAW_SUPER(sbi)->cp_payload); in __cp_payload()
2498 static inline void *__bitmap_ptr(struct f2fs_sb_info *sbi, int flag) in __bitmap_ptr() argument
2500 struct f2fs_checkpoint *ckpt = F2FS_CKPT(sbi); in __bitmap_ptr()
2504 if (is_set_ckpt_flags(sbi, CP_LARGE_NAT_BITMAP_FLAG)) { in __bitmap_ptr()
2514 if (__cp_payload(sbi) > 0) { in __bitmap_ptr()
2526 static inline block_t __start_cp_addr(struct f2fs_sb_info *sbi) in __start_cp_addr() argument
2528 block_t start_addr = le32_to_cpu(F2FS_RAW_SUPER(sbi)->cp_blkaddr); in __start_cp_addr()
2530 if (sbi->cur_cp_pack == 2) in __start_cp_addr()
2531 start_addr += sbi->blocks_per_seg; in __start_cp_addr()
2535 static inline block_t __start_cp_next_addr(struct f2fs_sb_info *sbi) in __start_cp_next_addr() argument
2537 block_t start_addr = le32_to_cpu(F2FS_RAW_SUPER(sbi)->cp_blkaddr); in __start_cp_next_addr()
2539 if (sbi->cur_cp_pack == 1) in __start_cp_next_addr()
2540 start_addr += sbi->blocks_per_seg; in __start_cp_next_addr()
2544 static inline void __set_cp_next_pack(struct f2fs_sb_info *sbi) in __set_cp_next_pack() argument
2546 sbi->cur_cp_pack = (sbi->cur_cp_pack == 1) ? 2 : 1; in __set_cp_next_pack()
2549 static inline block_t __start_sum_addr(struct f2fs_sb_info *sbi) in __start_sum_addr() argument
2551 return le32_to_cpu(F2FS_CKPT(sbi)->cp_pack_start_sum); in __start_sum_addr()
2555 static inline int inc_valid_node_count(struct f2fs_sb_info *sbi, in inc_valid_node_count() argument
2574 if (time_to_inject(sbi, FAULT_BLOCK)) in inc_valid_node_count()
2577 spin_lock(&sbi->stat_lock); in inc_valid_node_count()
2579 valid_block_count = sbi->total_valid_block_count + in inc_valid_node_count()
2580 sbi->current_reserved_blocks + 1; in inc_valid_node_count()
2582 if (!__allow_reserved_blocks(sbi, inode, false)) in inc_valid_node_count()
2583 valid_block_count += F2FS_OPTION(sbi).root_reserved_blocks; in inc_valid_node_count()
2585 if (F2FS_IO_ALIGNED(sbi)) in inc_valid_node_count()
2586 valid_block_count += sbi->blocks_per_seg * in inc_valid_node_count()
2587 SM_I(sbi)->additional_reserved_segments; in inc_valid_node_count()
2589 user_block_count = sbi->user_block_count; in inc_valid_node_count()
2590 if (unlikely(is_sbi_flag_set(sbi, SBI_CP_DISABLED))) in inc_valid_node_count()
2591 user_block_count -= sbi->unusable_block_count; in inc_valid_node_count()
2594 spin_unlock(&sbi->stat_lock); in inc_valid_node_count()
2598 valid_node_count = sbi->total_valid_node_count + 1; in inc_valid_node_count()
2599 if (unlikely(valid_node_count > sbi->total_node_count)) { in inc_valid_node_count()
2600 spin_unlock(&sbi->stat_lock); in inc_valid_node_count()
2604 sbi->total_valid_node_count++; in inc_valid_node_count()
2605 sbi->total_valid_block_count++; in inc_valid_node_count()
2606 spin_unlock(&sbi->stat_lock); in inc_valid_node_count()
2615 percpu_counter_inc(&sbi->alloc_valid_block_count); in inc_valid_node_count()
2628 static inline void dec_valid_node_count(struct f2fs_sb_info *sbi, in dec_valid_node_count() argument
2631 spin_lock(&sbi->stat_lock); in dec_valid_node_count()
2633 if (unlikely(!sbi->total_valid_block_count || in dec_valid_node_count()
2634 !sbi->total_valid_node_count)) { in dec_valid_node_count()
2635 …f2fs_warn(sbi, "dec_valid_node_count: inconsistent block counts, total_valid_block:%u, total_valid… in dec_valid_node_count()
2636 sbi->total_valid_block_count, in dec_valid_node_count()
2637 sbi->total_valid_node_count); in dec_valid_node_count()
2638 set_sbi_flag(sbi, SBI_NEED_FSCK); in dec_valid_node_count()
2640 sbi->total_valid_block_count--; in dec_valid_node_count()
2641 sbi->total_valid_node_count--; in dec_valid_node_count()
2644 if (sbi->reserved_blocks && in dec_valid_node_count()
2645 sbi->current_reserved_blocks < sbi->reserved_blocks) in dec_valid_node_count()
2646 sbi->current_reserved_blocks++; in dec_valid_node_count()
2648 spin_unlock(&sbi->stat_lock); in dec_valid_node_count()
2654 f2fs_warn(sbi, "dec_valid_node_count: inconsistent i_blocks, ino:%lu, iblocks:%llu", in dec_valid_node_count()
2657 set_sbi_flag(sbi, SBI_NEED_FSCK); in dec_valid_node_count()
2664 static inline unsigned int valid_node_count(struct f2fs_sb_info *sbi) in valid_node_count() argument
2666 return sbi->total_valid_node_count; in valid_node_count()
2669 static inline void inc_valid_inode_count(struct f2fs_sb_info *sbi) in inc_valid_inode_count() argument
2671 percpu_counter_inc(&sbi->total_valid_inode_count); in inc_valid_inode_count()
2674 static inline void dec_valid_inode_count(struct f2fs_sb_info *sbi) in dec_valid_inode_count() argument
2676 percpu_counter_dec(&sbi->total_valid_inode_count); in dec_valid_inode_count()
2679 static inline s64 valid_inode_count(struct f2fs_sb_info *sbi) in valid_inode_count() argument
2681 return percpu_counter_sum_positive(&sbi->total_valid_inode_count); in valid_inode_count()
2757 gfp_t flags, bool nofail, struct f2fs_sb_info *sbi) in f2fs_kmem_cache_alloc() argument
2762 if (time_to_inject(sbi, FAULT_SLAB_ALLOC)) in f2fs_kmem_cache_alloc()
2768 static inline bool is_inflight_io(struct f2fs_sb_info *sbi, int type) in is_inflight_io() argument
2770 if (get_pages(sbi, F2FS_RD_DATA) || get_pages(sbi, F2FS_RD_NODE) || in is_inflight_io()
2771 get_pages(sbi, F2FS_RD_META) || get_pages(sbi, F2FS_WB_DATA) || in is_inflight_io()
2772 get_pages(sbi, F2FS_WB_CP_DATA) || in is_inflight_io()
2773 get_pages(sbi, F2FS_DIO_READ) || in is_inflight_io()
2774 get_pages(sbi, F2FS_DIO_WRITE)) in is_inflight_io()
2777 if (type != DISCARD_TIME && SM_I(sbi) && SM_I(sbi)->dcc_info && in is_inflight_io()
2778 atomic_read(&SM_I(sbi)->dcc_info->queued_discard)) in is_inflight_io()
2781 if (SM_I(sbi) && SM_I(sbi)->fcc_info && in is_inflight_io()
2782 atomic_read(&SM_I(sbi)->fcc_info->queued_flush)) in is_inflight_io()
2787 static inline bool is_idle(struct f2fs_sb_info *sbi, int type) in is_idle() argument
2789 if (sbi->gc_mode == GC_URGENT_HIGH) in is_idle()
2792 if (is_inflight_io(sbi, type)) in is_idle()
2795 if (sbi->gc_mode == GC_URGENT_MID) in is_idle()
2798 if (sbi->gc_mode == GC_URGENT_LOW && in is_idle()
2802 return f2fs_time_over(sbi, type); in is_idle()
3288 struct f2fs_sb_info *sbi = F2FS_I_SB(inode); in f2fs_skip_inode_update() local
3290 spin_lock(&sbi->inode_lock[DIRTY_META]); in f2fs_skip_inode_update()
3292 spin_unlock(&sbi->inode_lock[DIRTY_META]); in f2fs_skip_inode_update()
3315 static inline bool f2fs_cp_error(struct f2fs_sb_info *sbi) in f2fs_cp_error() argument
3317 return is_set_ckpt_flags(sbi, CP_ERROR_FLAG); in f2fs_cp_error()
3331 static inline void *f2fs_kmalloc(struct f2fs_sb_info *sbi, in f2fs_kmalloc() argument
3334 if (time_to_inject(sbi, FAULT_KMALLOC)) in f2fs_kmalloc()
3340 static inline void *f2fs_getname(struct f2fs_sb_info *sbi) in f2fs_getname() argument
3342 if (time_to_inject(sbi, FAULT_KMALLOC)) in f2fs_getname()
3353 static inline void *f2fs_kzalloc(struct f2fs_sb_info *sbi, in f2fs_kzalloc() argument
3356 return f2fs_kmalloc(sbi, size, flags | __GFP_ZERO); in f2fs_kzalloc()
3359 static inline void *f2fs_kvmalloc(struct f2fs_sb_info *sbi, in f2fs_kvmalloc() argument
3362 if (time_to_inject(sbi, FAULT_KVMALLOC)) in f2fs_kvmalloc()
3368 static inline void *f2fs_kvzalloc(struct f2fs_sb_info *sbi, in f2fs_kvzalloc() argument
3371 return f2fs_kvmalloc(sbi, size, flags | __GFP_ZERO); in f2fs_kvzalloc()
3398 #define __is_large_section(sbi) ((sbi)->segs_per_sec > 1) argument
3402 bool f2fs_is_valid_blkaddr(struct f2fs_sb_info *sbi,
3404 static inline void verify_blkaddr(struct f2fs_sb_info *sbi, in verify_blkaddr() argument
3407 if (!f2fs_is_valid_blkaddr(sbi, blkaddr, type)) { in verify_blkaddr()
3408 f2fs_err(sbi, "invalid blkaddr: %u, type: %d, run fsck to fix.", in verify_blkaddr()
3410 f2fs_bug_on(sbi, 1); in verify_blkaddr()
3449 bool f2fs_inode_chksum_verify(struct f2fs_sb_info *sbi, struct page *page);
3450 void f2fs_inode_chksum_set(struct f2fs_sb_info *sbi, struct page *page);
3453 int f2fs_try_to_free_nats(struct f2fs_sb_info *sbi, int nr_shrink);
3463 int f2fs_update_extension_list(struct f2fs_sb_info *sbi, const char *name,
3531 int f2fs_enable_quota_files(struct f2fs_sb_info *sbi, bool rdonly);
3535 void f2fs_handle_stop(struct f2fs_sb_info *sbi, unsigned char reason);
3536 void f2fs_save_errors(struct f2fs_sb_info *sbi, unsigned char flag);
3537 void f2fs_handle_error(struct f2fs_sb_info *sbi, unsigned char error);
3538 int f2fs_commit_super(struct f2fs_sb_info *sbi, bool recover);
3540 int f2fs_sanity_check_ckpt(struct f2fs_sb_info *sbi);
3552 int f2fs_check_nid_range(struct f2fs_sb_info *sbi, nid_t nid);
3553 bool f2fs_available_free_memory(struct f2fs_sb_info *sbi, int type);
3554 bool f2fs_in_warm_node_list(struct f2fs_sb_info *sbi, struct page *page);
3555 void f2fs_init_fsync_node_info(struct f2fs_sb_info *sbi);
3556 void f2fs_del_fsync_node_entry(struct f2fs_sb_info *sbi, struct page *page);
3557 void f2fs_reset_fsync_node_info(struct f2fs_sb_info *sbi);
3558 int f2fs_need_dentry_mark(struct f2fs_sb_info *sbi, nid_t nid);
3559 bool f2fs_is_checkpointed_node(struct f2fs_sb_info *sbi, nid_t nid);
3560 bool f2fs_need_inode_block_update(struct f2fs_sb_info *sbi, nid_t ino);
3561 int f2fs_get_node_info(struct f2fs_sb_info *sbi, nid_t nid,
3567 int f2fs_wait_on_node_pages_writeback(struct f2fs_sb_info *sbi,
3569 bool f2fs_nat_bitmap_enabled(struct f2fs_sb_info *sbi);
3573 void f2fs_ra_node_page(struct f2fs_sb_info *sbi, nid_t nid);
3574 struct page *f2fs_get_node_page(struct f2fs_sb_info *sbi, pgoff_t nid);
3577 void f2fs_flush_inline_data(struct f2fs_sb_info *sbi);
3578 int f2fs_fsync_node_pages(struct f2fs_sb_info *sbi, struct inode *inode,
3581 int f2fs_sync_node_pages(struct f2fs_sb_info *sbi,
3584 int f2fs_build_free_nids(struct f2fs_sb_info *sbi, bool sync, bool mount);
3585 bool f2fs_alloc_nid(struct f2fs_sb_info *sbi, nid_t *nid);
3586 void f2fs_alloc_nid_done(struct f2fs_sb_info *sbi, nid_t nid);
3587 void f2fs_alloc_nid_failed(struct f2fs_sb_info *sbi, nid_t nid);
3588 int f2fs_try_to_free_nids(struct f2fs_sb_info *sbi, int nr_shrink);
3591 int f2fs_recover_inode_page(struct f2fs_sb_info *sbi, struct page *page);
3592 int f2fs_restore_node_summary(struct f2fs_sb_info *sbi,
3594 void f2fs_enable_nat_bits(struct f2fs_sb_info *sbi);
3595 int f2fs_flush_nat_entries(struct f2fs_sb_info *sbi, struct cp_control *cpc);
3596 int f2fs_build_node_manager(struct f2fs_sb_info *sbi);
3597 void f2fs_destroy_node_manager(struct f2fs_sb_info *sbi);
3604 bool f2fs_need_SSR(struct f2fs_sb_info *sbi);
3607 void f2fs_balance_fs(struct f2fs_sb_info *sbi, bool need);
3608 void f2fs_balance_fs_bg(struct f2fs_sb_info *sbi, bool from_bg);
3609 int f2fs_issue_flush(struct f2fs_sb_info *sbi, nid_t ino);
3610 int f2fs_create_flush_cmd_control(struct f2fs_sb_info *sbi);
3611 int f2fs_flush_device_cache(struct f2fs_sb_info *sbi);
3612 void f2fs_destroy_flush_cmd_control(struct f2fs_sb_info *sbi, bool free);
3613 void f2fs_invalidate_blocks(struct f2fs_sb_info *sbi, block_t addr);
3614 bool f2fs_is_checkpointed_data(struct f2fs_sb_info *sbi, block_t blkaddr);
3615 int f2fs_start_discard_thread(struct f2fs_sb_info *sbi);
3616 void f2fs_drop_discard_cmd(struct f2fs_sb_info *sbi);
3617 void f2fs_stop_discard_thread(struct f2fs_sb_info *sbi);
3618 bool f2fs_issue_discard_timeout(struct f2fs_sb_info *sbi);
3619 void f2fs_clear_prefree_segments(struct f2fs_sb_info *sbi,
3621 void f2fs_dirty_to_prefree(struct f2fs_sb_info *sbi);
3622 block_t f2fs_get_unusable_blocks(struct f2fs_sb_info *sbi);
3623 int f2fs_disable_cp_again(struct f2fs_sb_info *sbi, block_t unusable);
3624 void f2fs_release_discard_addrs(struct f2fs_sb_info *sbi);
3625 int f2fs_npages_for_summary_flush(struct f2fs_sb_info *sbi, bool for_ra);
3626 bool f2fs_segment_has_free_slot(struct f2fs_sb_info *sbi, int segno);
3627 void f2fs_init_inmem_curseg(struct f2fs_sb_info *sbi);
3628 void f2fs_save_inmem_curseg(struct f2fs_sb_info *sbi);
3629 void f2fs_restore_inmem_curseg(struct f2fs_sb_info *sbi);
3630 void f2fs_get_new_segment(struct f2fs_sb_info *sbi,
3632 void f2fs_allocate_segment_for_resize(struct f2fs_sb_info *sbi, int type,
3634 void f2fs_allocate_new_section(struct f2fs_sb_info *sbi, int type, bool force);
3635 void f2fs_allocate_new_segments(struct f2fs_sb_info *sbi);
3636 int f2fs_trim_fs(struct f2fs_sb_info *sbi, struct fstrim_range *range);
3637 bool f2fs_exist_trim_candidates(struct f2fs_sb_info *sbi,
3639 struct page *f2fs_get_sum_page(struct f2fs_sb_info *sbi, unsigned int segno);
3640 void f2fs_update_meta_page(struct f2fs_sb_info *sbi, void *src,
3642 void f2fs_do_write_meta_page(struct f2fs_sb_info *sbi, struct page *page,
3648 void f2fs_do_replace_block(struct f2fs_sb_info *sbi, struct f2fs_summary *sum,
3652 void f2fs_replace_block(struct f2fs_sb_info *sbi, struct dnode_of_data *dn,
3656 void f2fs_allocate_data_block(struct f2fs_sb_info *sbi, struct page *page,
3660 void f2fs_update_device_state(struct f2fs_sb_info *sbi, nid_t ino,
3667 void f2fs_write_data_summaries(struct f2fs_sb_info *sbi, block_t start_blk);
3668 void f2fs_write_node_summaries(struct f2fs_sb_info *sbi, block_t start_blk);
3671 void f2fs_flush_sit_entries(struct f2fs_sb_info *sbi, struct cp_control *cpc);
3672 int f2fs_fix_curseg_write_pointer(struct f2fs_sb_info *sbi);
3673 int f2fs_check_write_pointer(struct f2fs_sb_info *sbi);
3674 int f2fs_build_segment_manager(struct f2fs_sb_info *sbi);
3675 void f2fs_destroy_segment_manager(struct f2fs_sb_info *sbi);
3679 unsigned int f2fs_usable_segs_in_sec(struct f2fs_sb_info *sbi,
3681 unsigned int f2fs_usable_blks_in_seg(struct f2fs_sb_info *sbi,
3688 static inline bool f2fs_need_rand_seg(struct f2fs_sb_info *sbi) in f2fs_need_rand_seg() argument
3690 return F2FS_OPTION(sbi).fs_mode == FS_MODE_FRAGMENT_SEG || in f2fs_need_rand_seg()
3691 F2FS_OPTION(sbi).fs_mode == FS_MODE_FRAGMENT_BLK; in f2fs_need_rand_seg()
3697 void f2fs_stop_checkpoint(struct f2fs_sb_info *sbi, bool end_io,
3699 void f2fs_flush_ckpt_thread(struct f2fs_sb_info *sbi);
3700 struct page *f2fs_grab_meta_page(struct f2fs_sb_info *sbi, pgoff_t index);
3701 struct page *f2fs_get_meta_page(struct f2fs_sb_info *sbi, pgoff_t index);
3702 struct page *f2fs_get_meta_page_retry(struct f2fs_sb_info *sbi, pgoff_t index);
3703 struct page *f2fs_get_tmp_page(struct f2fs_sb_info *sbi, pgoff_t index);
3704 bool f2fs_is_valid_blkaddr(struct f2fs_sb_info *sbi,
3706 int f2fs_ra_meta_pages(struct f2fs_sb_info *sbi, block_t start, int nrpages,
3708 void f2fs_ra_meta_pages_cond(struct f2fs_sb_info *sbi, pgoff_t index,
3710 long f2fs_sync_meta_pages(struct f2fs_sb_info *sbi, enum page_type type,
3712 void f2fs_add_ino_entry(struct f2fs_sb_info *sbi, nid_t ino, int type);
3713 void f2fs_remove_ino_entry(struct f2fs_sb_info *sbi, nid_t ino, int type);
3714 void f2fs_release_ino_entry(struct f2fs_sb_info *sbi, bool all);
3715 bool f2fs_exist_written_data(struct f2fs_sb_info *sbi, nid_t ino, int mode);
3716 void f2fs_set_dirty_device(struct f2fs_sb_info *sbi, nid_t ino,
3718 bool f2fs_is_dirty_device(struct f2fs_sb_info *sbi, nid_t ino,
3720 int f2fs_acquire_orphan_inode(struct f2fs_sb_info *sbi);
3721 void f2fs_release_orphan_inode(struct f2fs_sb_info *sbi);
3723 void f2fs_remove_orphan_inode(struct f2fs_sb_info *sbi, nid_t ino);
3724 int f2fs_recover_orphan_inodes(struct f2fs_sb_info *sbi);
3725 int f2fs_get_valid_checkpoint(struct f2fs_sb_info *sbi);
3728 int f2fs_sync_dirty_inodes(struct f2fs_sb_info *sbi, enum inode_type type,
3730 void f2fs_wait_on_all_pages(struct f2fs_sb_info *sbi, int type);
3731 u64 f2fs_get_sectors_written(struct f2fs_sb_info *sbi);
3732 int f2fs_write_checkpoint(struct f2fs_sb_info *sbi, struct cp_control *cpc);
3733 void f2fs_init_ino_entry_info(struct f2fs_sb_info *sbi);
3736 int f2fs_issue_checkpoint(struct f2fs_sb_info *sbi);
3737 int f2fs_start_ckpt_thread(struct f2fs_sb_info *sbi);
3738 void f2fs_stop_ckpt_thread(struct f2fs_sb_info *sbi);
3739 void f2fs_init_ckpt_req_control(struct f2fs_sb_info *sbi);
3748 void f2fs_submit_read_bio(struct f2fs_sb_info *sbi, struct bio *bio,
3750 int f2fs_init_write_merge_io(struct f2fs_sb_info *sbi);
3751 void f2fs_submit_merged_write(struct f2fs_sb_info *sbi, enum page_type type);
3752 void f2fs_submit_merged_write_cond(struct f2fs_sb_info *sbi,
3755 void f2fs_submit_merged_ipu_write(struct f2fs_sb_info *sbi,
3757 void f2fs_flush_merged_writes(struct f2fs_sb_info *sbi);
3761 struct block_device *f2fs_target_device(struct f2fs_sb_info *sbi,
3763 int f2fs_target_device_index(struct f2fs_sb_info *sbi, block_t blkaddr);
3802 int f2fs_init_post_read_wq(struct f2fs_sb_info *sbi);
3803 void f2fs_destroy_post_read_wq(struct f2fs_sb_info *sbi);
3809 int f2fs_start_gc_thread(struct f2fs_sb_info *sbi);
3810 void f2fs_stop_gc_thread(struct f2fs_sb_info *sbi);
3812 int f2fs_gc(struct f2fs_sb_info *sbi, struct f2fs_gc_control *gc_control);
3813 void f2fs_build_gc_manager(struct f2fs_sb_info *sbi);
3818 int f2fs_get_victim(struct f2fs_sb_info *sbi, unsigned int *result,
3825 int f2fs_recover_fsync_data(struct f2fs_sb_info *sbi, bool check_only);
3826 bool f2fs_space_for_roll_forward(struct f2fs_sb_info *sbi);
3836 struct f2fs_sb_info *sbi; member
3897 static inline struct f2fs_stat_info *F2FS_STAT(struct f2fs_sb_info *sbi) in F2FS_STAT() argument
3899 return (struct f2fs_stat_info *)sbi->stat_info; in F2FS_STAT()
3906 #define stat_io_skip_bggc_count(sbi) ((sbi)->io_skip_bggc++) argument
3907 #define stat_other_skip_bggc_count(sbi) ((sbi)->other_skip_bggc++) argument
3908 #define stat_inc_dirty_inode(sbi, type) ((sbi)->ndirty_inode[type]++) argument
3909 #define stat_dec_dirty_inode(sbi, type) ((sbi)->ndirty_inode[type]--) argument
3910 #define stat_inc_total_hit(sbi, type) (atomic64_inc(&(sbi)->total_hit_ext[type])) argument
3911 #define stat_inc_rbtree_node_hit(sbi, type) (atomic64_inc(&(sbi)->read_hit_rbtree[type])) argument
3912 #define stat_inc_largest_node_hit(sbi) (atomic64_inc(&(sbi)->read_hit_largest)) argument
3913 #define stat_inc_cached_node_hit(sbi, type) (atomic64_inc(&(sbi)->read_hit_cached[type])) argument
3966 #define stat_inc_meta_count(sbi, blkaddr) \ argument
3968 if (blkaddr < SIT_I(sbi)->sit_base_addr) \
3969 atomic_inc(&(sbi)->meta_count[META_CP]); \
3970 else if (blkaddr < NM_I(sbi)->nat_blkaddr) \
3971 atomic_inc(&(sbi)->meta_count[META_SIT]); \
3972 else if (blkaddr < SM_I(sbi)->ssa_blkaddr) \
3973 atomic_inc(&(sbi)->meta_count[META_NAT]); \
3974 else if (blkaddr < SM_I(sbi)->main_blkaddr) \
3975 atomic_inc(&(sbi)->meta_count[META_SSA]); \
3977 #define stat_inc_seg_type(sbi, curseg) \ argument
3978 ((sbi)->segment_count[(curseg)->alloc_type]++)
3979 #define stat_inc_block_count(sbi, curseg) \ argument
3980 ((sbi)->block_count[(curseg)->alloc_type]++)
3981 #define stat_inc_inplace_blocks(sbi) \ argument
3982 (atomic_inc(&(sbi)->inplace_count))
3990 #define stat_inc_seg_count(sbi, type, gc_type) \ argument
3992 struct f2fs_stat_info *si = F2FS_STAT(sbi); \
4006 #define stat_inc_data_blk_count(sbi, blks, gc_type) \ argument
4008 struct f2fs_stat_info *si = F2FS_STAT(sbi); \
4014 #define stat_inc_node_blk_count(sbi, blks, gc_type) \ argument
4016 struct f2fs_stat_info *si = F2FS_STAT(sbi); \
4022 int f2fs_build_stats(struct f2fs_sb_info *sbi);
4023 void f2fs_destroy_stats(struct f2fs_sb_info *sbi);
4026 void f2fs_update_sit_info(struct f2fs_sb_info *sbi);
4032 #define stat_io_skip_bggc_count(sbi) do { } while (0) argument
4033 #define stat_other_skip_bggc_count(sbi) do { } while (0) argument
4034 #define stat_inc_dirty_inode(sbi, type) do { } while (0) argument
4035 #define stat_dec_dirty_inode(sbi, type) do { } while (0) argument
4036 #define stat_inc_total_hit(sbi, type) do { } while (0) argument
4037 #define stat_inc_rbtree_node_hit(sbi, type) do { } while (0) argument
4038 #define stat_inc_largest_node_hit(sbi) do { } while (0) argument
4039 #define stat_inc_cached_node_hit(sbi, type) do { } while (0) argument
4055 #define stat_inc_meta_count(sbi, blkaddr) do { } while (0) argument
4056 #define stat_inc_seg_type(sbi, curseg) do { } while (0) argument
4057 #define stat_inc_block_count(sbi, curseg) do { } while (0) argument
4058 #define stat_inc_inplace_blocks(sbi) do { } while (0) argument
4059 #define stat_inc_seg_count(sbi, type, gc_type) do { } while (0) argument
4061 #define stat_inc_data_blk_count(sbi, blks, gc_type) do { } while (0) argument
4062 #define stat_inc_node_blk_count(sbi, blks, gc_type) do { } while (0) argument
4064 static inline int f2fs_build_stats(struct f2fs_sb_info *sbi) { return 0; } in f2fs_build_stats() argument
4065 static inline void f2fs_destroy_stats(struct f2fs_sb_info *sbi) { } in f2fs_destroy_stats() argument
4068 static inline void f2fs_update_sit_info(struct f2fs_sb_info *sbi) {} in f2fs_update_sit_info() argument
4122 void f2fs_join_shrinker(struct f2fs_sb_info *sbi);
4123 void f2fs_leave_shrinker(struct f2fs_sb_info *sbi);
4133 void f2fs_init_extent_cache_info(struct f2fs_sb_info *sbi);
4146 unsigned int f2fs_shrink_read_extent_tree(struct f2fs_sb_info *sbi,
4156 unsigned int f2fs_shrink_age_extent_tree(struct f2fs_sb_info *sbi,
4167 int f2fs_register_sysfs(struct f2fs_sb_info *sbi);
4168 void f2fs_unregister_sysfs(struct f2fs_sb_info *sbi);
4241 void f2fs_init_compress_info(struct f2fs_sb_info *sbi);
4242 int f2fs_init_compress_inode(struct f2fs_sb_info *sbi);
4243 void f2fs_destroy_compress_inode(struct f2fs_sb_info *sbi);
4244 int f2fs_init_page_array_cache(struct f2fs_sb_info *sbi);
4245 void f2fs_destroy_page_array_cache(struct f2fs_sb_info *sbi);
4248 struct address_space *COMPRESS_MAPPING(struct f2fs_sb_info *sbi);
4249 void f2fs_invalidate_compress_page(struct f2fs_sb_info *sbi, block_t blkaddr);
4250 void f2fs_cache_compressed_page(struct f2fs_sb_info *sbi, struct page *page,
4252 bool f2fs_load_compressed_page(struct f2fs_sb_info *sbi, struct page *page,
4254 void f2fs_invalidate_compress_pages(struct f2fs_sb_info *sbi, nid_t ino);
4257 struct f2fs_sb_info *sbi = F2FS_I_SB(inode); \
4258 sbi->compr_new_inode++; \
4262 struct f2fs_sb_info *sbi = F2FS_I_SB(inode); \
4264 sbi->compr_written_block += blocks; \
4265 sbi->compr_saved_block += diff; \
4296 static inline int f2fs_init_compress_inode(struct f2fs_sb_info *sbi) { return 0; } in f2fs_init_compress_inode() argument
4297 static inline void f2fs_destroy_compress_inode(struct f2fs_sb_info *sbi) { } in f2fs_destroy_compress_inode() argument
4298 static inline int f2fs_init_page_array_cache(struct f2fs_sb_info *sbi) { return 0; } in f2fs_init_page_array_cache() argument
4299 static inline void f2fs_destroy_page_array_cache(struct f2fs_sb_info *sbi) { } in f2fs_destroy_page_array_cache() argument
4302 static inline void f2fs_invalidate_compress_page(struct f2fs_sb_info *sbi, in f2fs_invalidate_compress_page() argument
4304 static inline void f2fs_cache_compressed_page(struct f2fs_sb_info *sbi, in f2fs_cache_compressed_page() argument
4306 static inline bool f2fs_load_compressed_page(struct f2fs_sb_info *sbi, in f2fs_load_compressed_page() argument
4308 static inline void f2fs_invalidate_compress_pages(struct f2fs_sb_info *sbi, in f2fs_invalidate_compress_pages() argument
4320 struct f2fs_sb_info *sbi = F2FS_I_SB(inode); in set_compress_context() local
4323 F2FS_OPTION(sbi).compress_algorithm; in set_compress_context()
4325 F2FS_OPTION(sbi).compress_log_size; in set_compress_context()
4327 F2FS_OPTION(sbi).compress_chksum ? in set_compress_context()
4333 F2FS_OPTION(sbi).compress_level) in set_compress_context()
4335 F2FS_OPTION(sbi).compress_level; in set_compress_context()
4364 static inline bool f2fs_sb_has_##name(struct f2fs_sb_info *sbi) \
4366 return F2FS_HAS_FEATURE(sbi, F2FS_FEATURE_##flagname); \
4385 static inline bool f2fs_blkz_is_seq(struct f2fs_sb_info *sbi, int devi, in f2fs_blkz_is_seq() argument
4388 unsigned int zno = blkaddr / sbi->blocks_per_blkz; in f2fs_blkz_is_seq()
4394 static inline bool f2fs_hw_should_discard(struct f2fs_sb_info *sbi) in f2fs_hw_should_discard() argument
4396 return f2fs_sb_has_blkzoned(sbi); in f2fs_hw_should_discard()
4405 static inline bool f2fs_hw_support_discard(struct f2fs_sb_info *sbi) in f2fs_hw_support_discard() argument
4409 if (!f2fs_is_multi_device(sbi)) in f2fs_hw_support_discard()
4410 return f2fs_bdev_support_discard(sbi->sb->s_bdev); in f2fs_hw_support_discard()
4412 for (i = 0; i < sbi->s_ndevs; i++) in f2fs_hw_support_discard()
4418 static inline bool f2fs_realtime_discard_enable(struct f2fs_sb_info *sbi) in f2fs_realtime_discard_enable() argument
4420 return (test_opt(sbi, DISCARD) && f2fs_hw_support_discard(sbi)) || in f2fs_realtime_discard_enable()
4421 f2fs_hw_should_discard(sbi); in f2fs_realtime_discard_enable()
4424 static inline bool f2fs_hw_is_readonly(struct f2fs_sb_info *sbi) in f2fs_hw_is_readonly() argument
4428 if (!f2fs_is_multi_device(sbi)) in f2fs_hw_is_readonly()
4429 return bdev_read_only(sbi->sb->s_bdev); in f2fs_hw_is_readonly()
4431 for (i = 0; i < sbi->s_ndevs; i++) in f2fs_hw_is_readonly()
4437 static inline bool f2fs_dev_is_readonly(struct f2fs_sb_info *sbi) in f2fs_dev_is_readonly() argument
4439 return f2fs_sb_has_readonly(sbi) || f2fs_hw_is_readonly(sbi); in f2fs_dev_is_readonly()
4442 static inline bool f2fs_lfs_mode(struct f2fs_sb_info *sbi) in f2fs_lfs_mode() argument
4444 return F2FS_OPTION(sbi).fs_mode == FS_MODE_LFS; in f2fs_lfs_mode()
4447 static inline bool f2fs_low_mem_mode(struct f2fs_sb_info *sbi) in f2fs_low_mem_mode() argument
4449 return F2FS_OPTION(sbi).memory_mode == MEMORY_MODE_LOW; in f2fs_low_mem_mode()
4480 static inline bool f2fs_allow_multi_device_dio(struct f2fs_sb_info *sbi, in f2fs_allow_multi_device_dio() argument
4483 if (!f2fs_is_multi_device(sbi)) in f2fs_allow_multi_device_dio()
4487 return sbi->aligned_blksize; in f2fs_allow_multi_device_dio()
4497 extern void f2fs_build_fault_attr(struct f2fs_sb_info *sbi, unsigned int rate,
4500 #define f2fs_build_fault_attr(sbi, rate, type) do { } while (0) argument
4503 static inline bool is_journalled_quota(struct f2fs_sb_info *sbi) in is_journalled_quota() argument
4506 if (f2fs_sb_has_quota_ino(sbi)) in is_journalled_quota()
4508 if (F2FS_OPTION(sbi).s_qf_names[USRQUOTA] || in is_journalled_quota()
4509 F2FS_OPTION(sbi).s_qf_names[GRPQUOTA] || in is_journalled_quota()
4510 F2FS_OPTION(sbi).s_qf_names[PRJQUOTA]) in is_journalled_quota()
4516 static inline bool f2fs_block_unit_discard(struct f2fs_sb_info *sbi) in f2fs_block_unit_discard() argument
4518 return F2FS_OPTION(sbi).discard_unit == DISCARD_UNIT_BLOCK; in f2fs_block_unit_discard()
4527 static inline void f2fs_handle_page_eio(struct f2fs_sb_info *sbi, pgoff_t ofs, in f2fs_handle_page_eio() argument
4530 if (unlikely(f2fs_cp_error(sbi))) in f2fs_handle_page_eio()
4533 if (ofs == sbi->page_eio_ofs[type]) { in f2fs_handle_page_eio()
4534 if (sbi->page_eio_cnt[type]++ == MAX_RETRY_PAGE_EIO) in f2fs_handle_page_eio()
4535 set_ckpt_flags(sbi, CP_ERROR_FLAG); in f2fs_handle_page_eio()
4537 sbi->page_eio_ofs[type] = ofs; in f2fs_handle_page_eio()
4538 sbi->page_eio_cnt[type] = 0; in f2fs_handle_page_eio()
4542 static inline bool f2fs_is_readonly(struct f2fs_sb_info *sbi) in f2fs_is_readonly() argument
4544 return f2fs_sb_has_readonly(sbi) || f2fs_readonly(sbi->sb); in f2fs_is_readonly()