Lines Matching refs:sbi
50 struct f2fs_sb_info *sbi, char *buf);
52 static unsigned char *__struct_ptr(struct f2fs_sb_info *sbi, int struct_type) in __struct_ptr() argument
55 return (unsigned char *)sbi->gc_thread; in __struct_ptr()
57 return (unsigned char *)SM_I(sbi); in __struct_ptr()
59 return (unsigned char *)SM_I(sbi)->dcc_info; in __struct_ptr()
61 return (unsigned char *)NM_I(sbi); in __struct_ptr()
63 return (unsigned char *)sbi; in __struct_ptr()
67 return (unsigned char *)&F2FS_OPTION(sbi).fault_info; in __struct_ptr()
71 return (unsigned char *)F2FS_STAT(sbi); in __struct_ptr()
77 struct f2fs_sb_info *sbi, char *buf) in dirty_segments_show() argument
80 (unsigned long long)(dirty_segments(sbi))); in dirty_segments_show()
84 struct f2fs_sb_info *sbi, char *buf) in free_segments_show() argument
87 (unsigned long long)(free_segments(sbi))); in free_segments_show()
91 struct f2fs_sb_info *sbi, char *buf) in lifetime_write_kbytes_show() argument
93 struct super_block *sb = sbi->sb; in lifetime_write_kbytes_show()
99 (unsigned long long)(sbi->kbytes_written + in lifetime_write_kbytes_show()
100 BD_PART_WRITTEN(sbi))); in lifetime_write_kbytes_show()
104 struct f2fs_sb_info *sbi, char *buf) in features_show() argument
106 struct super_block *sb = sbi->sb; in features_show()
112 if (f2fs_sb_has_encrypt(sbi)) in features_show()
115 if (f2fs_sb_has_blkzoned(sbi)) in features_show()
118 if (f2fs_sb_has_extra_attr(sbi)) in features_show()
121 if (f2fs_sb_has_project_quota(sbi)) in features_show()
124 if (f2fs_sb_has_inode_chksum(sbi)) in features_show()
127 if (f2fs_sb_has_flexible_inline_xattr(sbi)) in features_show()
130 if (f2fs_sb_has_quota_ino(sbi)) in features_show()
133 if (f2fs_sb_has_inode_crtime(sbi)) in features_show()
136 if (f2fs_sb_has_lost_found(sbi)) in features_show()
139 if (f2fs_sb_has_verity(sbi)) in features_show()
142 if (f2fs_sb_has_sb_chksum(sbi)) in features_show()
145 if (f2fs_sb_has_casefold(sbi)) in features_show()
148 if (f2fs_sb_has_compression(sbi)) in features_show()
158 struct f2fs_sb_info *sbi, char *buf) in current_reserved_blocks_show() argument
160 return sprintf(buf, "%u\n", sbi->current_reserved_blocks); in current_reserved_blocks_show()
164 struct f2fs_sb_info *sbi, char *buf) in unusable_show() argument
168 if (test_opt(sbi, DISABLE_CHECKPOINT)) in unusable_show()
169 unusable = sbi->unusable_block_count; in unusable_show()
171 unusable = f2fs_get_unusable_blocks(sbi); in unusable_show()
176 struct f2fs_sb_info *sbi, char *buf) in encoding_show() argument
179 struct super_block *sb = sbi->sb; in encoding_show()
181 if (f2fs_sb_has_casefold(sbi)) in encoding_show()
192 struct f2fs_sb_info *sbi, char *buf) in mounted_time_sec_show() argument
194 return sprintf(buf, "%llu", SIT_I(sbi)->mounted_time); in mounted_time_sec_show()
199 struct f2fs_sb_info *sbi, char *buf) in moved_blocks_foreground_show() argument
201 struct f2fs_stat_info *si = F2FS_STAT(sbi); in moved_blocks_foreground_show()
209 struct f2fs_sb_info *sbi, char *buf) in moved_blocks_background_show() argument
211 struct f2fs_stat_info *si = F2FS_STAT(sbi); in moved_blocks_background_show()
218 struct f2fs_sb_info *sbi, char *buf) in avg_vblocks_show() argument
220 struct f2fs_stat_info *si = F2FS_STAT(sbi); in avg_vblocks_show()
222 si->dirty_count = dirty_segments(sbi); in avg_vblocks_show()
223 f2fs_update_sit_info(sbi); in avg_vblocks_show()
229 struct f2fs_sb_info *sbi, char *buf) in main_blkaddr_show() argument
232 (unsigned long long)MAIN_BLKADDR(sbi)); in main_blkaddr_show()
236 struct f2fs_sb_info *sbi, char *buf) in f2fs_sbi_show() argument
241 ptr = __struct_ptr(sbi, a->struct_type); in f2fs_sbi_show()
247 sbi->raw_super->extension_list; in f2fs_sbi_show()
248 int cold_count = le32_to_cpu(sbi->raw_super->extension_count); in f2fs_sbi_show()
249 int hot_count = sbi->raw_super->hot_ext_count; in f2fs_sbi_show()
272 struct f2fs_sb_info *sbi, in __sbi_store() argument
280 ptr = __struct_ptr(sbi, a->struct_type); in __sbi_store()
305 down_write(&sbi->sb_lock); in __sbi_store()
307 ret = f2fs_update_extension_list(sbi, name, hot, set); in __sbi_store()
311 ret = f2fs_commit_super(sbi, false); in __sbi_store()
313 f2fs_update_extension_list(sbi, name, hot, !set); in __sbi_store()
315 up_write(&sbi->sb_lock); in __sbi_store()
331 spin_lock(&sbi->stat_lock); in __sbi_store()
332 if (t > (unsigned long)(sbi->user_block_count - in __sbi_store()
333 F2FS_OPTION(sbi).root_reserved_blocks)) { in __sbi_store()
334 spin_unlock(&sbi->stat_lock); in __sbi_store()
338 sbi->current_reserved_blocks = min(sbi->reserved_blocks, in __sbi_store()
339 sbi->user_block_count - valid_user_blocks(sbi)); in __sbi_store()
340 spin_unlock(&sbi->stat_lock); in __sbi_store()
354 if (t == 0 || t > sbi->segs_per_sec) in __sbi_store()
363 sbi->gc_mode = GC_NORMAL; in __sbi_store()
365 sbi->gc_mode = GC_URGENT_HIGH; in __sbi_store()
366 if (sbi->gc_thread) { in __sbi_store()
367 sbi->gc_thread->gc_wake = 1; in __sbi_store()
369 &sbi->gc_thread->gc_wait_queue_head); in __sbi_store()
370 wake_up_discard_thread(sbi, true); in __sbi_store()
373 sbi->gc_mode = GC_URGENT_LOW; in __sbi_store()
381 sbi->gc_mode = GC_IDLE_CB; in __sbi_store()
383 sbi->gc_mode = GC_IDLE_GREEDY; in __sbi_store()
385 if (!sbi->am.atgc_enabled) in __sbi_store()
387 sbi->gc_mode = GC_AT; in __sbi_store()
389 sbi->gc_mode = GC_NORMAL; in __sbi_store()
395 sbi->iostat_enable = !!t; in __sbi_store()
396 if (!sbi->iostat_enable) in __sbi_store()
397 f2fs_reset_iostat(sbi); in __sbi_store()
404 spin_lock(&sbi->iostat_lock); in __sbi_store()
405 sbi->iostat_period_ms = (unsigned int)t; in __sbi_store()
406 spin_unlock(&sbi->iostat_lock); in __sbi_store()
416 struct f2fs_sb_info *sbi, in f2fs_sbi_store() argument
424 if (!down_read_trylock(&sbi->sb->s_umount)) in f2fs_sbi_store()
427 ret = __sbi_store(a, sbi, buf, count); in f2fs_sbi_store()
429 up_read(&sbi->sb->s_umount); in f2fs_sbi_store()
437 struct f2fs_sb_info *sbi = container_of(kobj, struct f2fs_sb_info, in f2fs_attr_show() local
441 return a->show ? a->show(a, sbi, buf) : 0; in f2fs_attr_show()
447 struct f2fs_sb_info *sbi = container_of(kobj, struct f2fs_sb_info, in f2fs_attr_store() local
451 return a->store ? a->store(a, sbi, buf, len) : 0; in f2fs_attr_store()
456 struct f2fs_sb_info *sbi = container_of(kobj, struct f2fs_sb_info, in f2fs_sb_release() local
458 complete(&sbi->s_kobj_unregister); in f2fs_sb_release()
480 struct f2fs_sb_info *sbi, char *buf) in f2fs_feature_show() argument
743 struct f2fs_sb_info *sbi = F2FS_SB(sb); in segment_info_seq_show() local
745 le32_to_cpu(sbi->raw_super->segment_count_main); in segment_info_seq_show()
752 struct seg_entry *se = get_seg_entry(sbi, i); in segment_info_seq_show()
770 struct f2fs_sb_info *sbi = F2FS_SB(sb); in segment_bits_seq_show() local
772 le32_to_cpu(sbi->raw_super->segment_count_main); in segment_bits_seq_show()
779 struct seg_entry *se = get_seg_entry(sbi, i); in segment_bits_seq_show()
790 void f2fs_record_iostat(struct f2fs_sb_info *sbi) in f2fs_record_iostat() argument
795 if (time_is_after_jiffies(sbi->iostat_next_period)) in f2fs_record_iostat()
799 spin_lock(&sbi->iostat_lock); in f2fs_record_iostat()
800 if (time_is_after_jiffies(sbi->iostat_next_period)) { in f2fs_record_iostat()
801 spin_unlock(&sbi->iostat_lock); in f2fs_record_iostat()
804 sbi->iostat_next_period = jiffies + in f2fs_record_iostat()
805 msecs_to_jiffies(sbi->iostat_period_ms); in f2fs_record_iostat()
808 iostat_diff[i] = sbi->rw_iostat[i] - in f2fs_record_iostat()
809 sbi->prev_rw_iostat[i]; in f2fs_record_iostat()
810 sbi->prev_rw_iostat[i] = sbi->rw_iostat[i]; in f2fs_record_iostat()
812 spin_unlock(&sbi->iostat_lock); in f2fs_record_iostat()
814 trace_f2fs_iostat(sbi, iostat_diff); in f2fs_record_iostat()
821 struct f2fs_sb_info *sbi = F2FS_SB(sb); in iostat_info_seq_show() local
824 if (!sbi->iostat_enable) in iostat_info_seq_show()
832 sbi->rw_iostat[APP_BUFFERED_IO]); in iostat_info_seq_show()
834 sbi->rw_iostat[APP_DIRECT_IO]); in iostat_info_seq_show()
836 sbi->rw_iostat[APP_MAPPED_IO]); in iostat_info_seq_show()
840 sbi->rw_iostat[FS_DATA_IO]); in iostat_info_seq_show()
842 sbi->rw_iostat[FS_NODE_IO]); in iostat_info_seq_show()
844 sbi->rw_iostat[FS_META_IO]); in iostat_info_seq_show()
846 sbi->rw_iostat[FS_GC_DATA_IO]); in iostat_info_seq_show()
848 sbi->rw_iostat[FS_GC_NODE_IO]); in iostat_info_seq_show()
850 sbi->rw_iostat[FS_CP_DATA_IO]); in iostat_info_seq_show()
852 sbi->rw_iostat[FS_CP_NODE_IO]); in iostat_info_seq_show()
854 sbi->rw_iostat[FS_CP_META_IO]); in iostat_info_seq_show()
859 sbi->rw_iostat[APP_BUFFERED_READ_IO]); in iostat_info_seq_show()
861 sbi->rw_iostat[APP_DIRECT_READ_IO]); in iostat_info_seq_show()
863 sbi->rw_iostat[APP_MAPPED_READ_IO]); in iostat_info_seq_show()
867 sbi->rw_iostat[FS_DATA_READ_IO]); in iostat_info_seq_show()
869 sbi->rw_iostat[FS_GDATA_READ_IO]); in iostat_info_seq_show()
871 sbi->rw_iostat[FS_CDATA_READ_IO]); in iostat_info_seq_show()
873 sbi->rw_iostat[FS_NODE_READ_IO]); in iostat_info_seq_show()
875 sbi->rw_iostat[FS_META_READ_IO]); in iostat_info_seq_show()
880 sbi->rw_iostat[FS_DISCARD]); in iostat_info_seq_show()
889 struct f2fs_sb_info *sbi = F2FS_SB(sb); in victim_bits_seq_show() local
890 struct dirty_seglist_info *dirty_i = DIRTY_I(sbi); in victim_bits_seq_show()
895 for (i = 0; i < MAIN_SECS(sbi); i++) { in victim_bits_seq_show()
899 if ((i % 10) == 9 || i == (MAIN_SECS(sbi) - 1)) in victim_bits_seq_show()
936 int f2fs_register_sysfs(struct f2fs_sb_info *sbi) in f2fs_register_sysfs() argument
938 struct super_block *sb = sbi->sb; in f2fs_register_sysfs()
941 sbi->s_kobj.kset = &f2fs_kset; in f2fs_register_sysfs()
942 init_completion(&sbi->s_kobj_unregister); in f2fs_register_sysfs()
943 err = kobject_init_and_add(&sbi->s_kobj, &f2fs_sb_ktype, NULL, in f2fs_register_sysfs()
946 kobject_put(&sbi->s_kobj); in f2fs_register_sysfs()
947 wait_for_completion(&sbi->s_kobj_unregister); in f2fs_register_sysfs()
952 sbi->s_proc = proc_mkdir(sb->s_id, f2fs_proc_root); in f2fs_register_sysfs()
954 if (sbi->s_proc) { in f2fs_register_sysfs()
955 proc_create_single_data("segment_info", S_IRUGO, sbi->s_proc, in f2fs_register_sysfs()
957 proc_create_single_data("segment_bits", S_IRUGO, sbi->s_proc, in f2fs_register_sysfs()
959 proc_create_single_data("iostat_info", S_IRUGO, sbi->s_proc, in f2fs_register_sysfs()
961 proc_create_single_data("victim_bits", S_IRUGO, sbi->s_proc, in f2fs_register_sysfs()
967 void f2fs_unregister_sysfs(struct f2fs_sb_info *sbi) in f2fs_unregister_sysfs() argument
969 if (sbi->s_proc) { in f2fs_unregister_sysfs()
970 remove_proc_entry("iostat_info", sbi->s_proc); in f2fs_unregister_sysfs()
971 remove_proc_entry("segment_info", sbi->s_proc); in f2fs_unregister_sysfs()
972 remove_proc_entry("segment_bits", sbi->s_proc); in f2fs_unregister_sysfs()
973 remove_proc_entry("victim_bits", sbi->s_proc); in f2fs_unregister_sysfs()
974 remove_proc_entry(sbi->sb->s_id, f2fs_proc_root); in f2fs_unregister_sysfs()
976 kobject_del(&sbi->s_kobj); in f2fs_unregister_sysfs()
977 kobject_put(&sbi->s_kobj); in f2fs_unregister_sysfs()
978 wait_for_completion(&sbi->s_kobj_unregister); in f2fs_unregister_sysfs()