Lines Matching full:sbi
53 struct f2fs_sb_info *sbi, char *buf);
55 static unsigned char *__struct_ptr(struct f2fs_sb_info *sbi, int struct_type) in __struct_ptr() argument
58 return (unsigned char *)sbi->gc_thread; in __struct_ptr()
60 return (unsigned char *)SM_I(sbi); in __struct_ptr()
62 return (unsigned char *)SM_I(sbi)->dcc_info; in __struct_ptr()
64 return (unsigned char *)NM_I(sbi); in __struct_ptr()
66 return (unsigned char *)sbi; in __struct_ptr()
69 return (unsigned char *)&sbi->hot_cold_params; in __struct_ptr()
74 return (unsigned char *)&F2FS_OPTION(sbi).fault_info; in __struct_ptr()
78 return (unsigned char *)F2FS_STAT(sbi); in __struct_ptr()
84 struct f2fs_sb_info *sbi, char *buf) in dirty_segments_show() argument
87 (unsigned long long)(dirty_segments(sbi))); in dirty_segments_show()
91 struct f2fs_sb_info *sbi, char *buf) in free_segments_show() argument
94 (unsigned long long)(free_segments(sbi))); in free_segments_show()
98 struct f2fs_sb_info *sbi, char *buf) in lifetime_write_kbytes_show() argument
100 struct super_block *sb = sbi->sb; in lifetime_write_kbytes_show()
106 (unsigned long long)(sbi->kbytes_written + in lifetime_write_kbytes_show()
107 BD_PART_WRITTEN(sbi))); in lifetime_write_kbytes_show()
111 struct f2fs_sb_info *sbi, char *buf) in features_show() argument
113 struct super_block *sb = sbi->sb; in features_show()
119 if (f2fs_sb_has_encrypt(sbi)) in features_show()
122 if (f2fs_sb_has_blkzoned(sbi)) in features_show()
125 if (f2fs_sb_has_extra_attr(sbi)) in features_show()
128 if (f2fs_sb_has_project_quota(sbi)) in features_show()
131 if (f2fs_sb_has_inode_chksum(sbi)) in features_show()
134 if (f2fs_sb_has_flexible_inline_xattr(sbi)) in features_show()
137 if (f2fs_sb_has_quota_ino(sbi)) in features_show()
140 if (f2fs_sb_has_inode_crtime(sbi)) in features_show()
143 if (f2fs_sb_has_lost_found(sbi)) in features_show()
146 if (f2fs_sb_has_verity(sbi)) in features_show()
149 if (f2fs_sb_has_sb_chksum(sbi)) in features_show()
152 if (f2fs_sb_has_casefold(sbi)) in features_show()
155 if (f2fs_sb_has_compression(sbi)) in features_show()
165 struct f2fs_sb_info *sbi, char *buf) in current_reserved_blocks_show() argument
167 return sprintf(buf, "%u\n", sbi->current_reserved_blocks); in current_reserved_blocks_show()
171 struct f2fs_sb_info *sbi, char *buf) in unusable_show() argument
175 if (test_opt(sbi, DISABLE_CHECKPOINT)) in unusable_show()
176 unusable = sbi->unusable_block_count; in unusable_show()
178 unusable = f2fs_get_unusable_blocks(sbi); in unusable_show()
183 struct f2fs_sb_info *sbi, char *buf) in encoding_show() argument
186 struct super_block *sb = sbi->sb; in encoding_show()
188 if (f2fs_sb_has_casefold(sbi)) in encoding_show()
199 struct f2fs_sb_info *sbi, char *buf) in mounted_time_sec_show() argument
201 return sprintf(buf, "%llu", SIT_I(sbi)->mounted_time); in mounted_time_sec_show()
206 struct f2fs_sb_info *sbi, char *buf) in moved_blocks_foreground_show() argument
208 struct f2fs_stat_info *si = F2FS_STAT(sbi); in moved_blocks_foreground_show()
216 struct f2fs_sb_info *sbi, char *buf) in moved_blocks_background_show() argument
218 struct f2fs_stat_info *si = F2FS_STAT(sbi); in moved_blocks_background_show()
225 struct f2fs_sb_info *sbi, char *buf) in avg_vblocks_show() argument
227 struct f2fs_stat_info *si = F2FS_STAT(sbi); in avg_vblocks_show()
229 si->dirty_count = dirty_segments(sbi); in avg_vblocks_show()
230 f2fs_update_sit_info(sbi); in avg_vblocks_show()
236 struct f2fs_sb_info *sbi, char *buf) in main_blkaddr_show() argument
239 (unsigned long long)MAIN_BLKADDR(sbi)); in main_blkaddr_show()
243 struct f2fs_sb_info *sbi, char *buf) in f2fs_sbi_show() argument
248 ptr = __struct_ptr(sbi, a->struct_type); in f2fs_sbi_show()
254 sbi->raw_super->extension_list; in f2fs_sbi_show()
255 int cold_count = le32_to_cpu(sbi->raw_super->extension_count); in f2fs_sbi_show()
256 int hot_count = sbi->raw_super->hot_ext_count; in f2fs_sbi_show()
279 struct f2fs_sb_info *sbi, in __sbi_store() argument
287 ptr = __struct_ptr(sbi, a->struct_type); in __sbi_store()
312 down_write(&sbi->sb_lock); in __sbi_store()
314 ret = f2fs_update_extension_list(sbi, name, hot, set); in __sbi_store()
318 ret = f2fs_commit_super(sbi, false); in __sbi_store()
320 f2fs_update_extension_list(sbi, name, hot, !set); in __sbi_store()
322 up_write(&sbi->sb_lock); in __sbi_store()
338 spin_lock(&sbi->stat_lock); in __sbi_store()
339 if (t > (unsigned long)(sbi->user_block_count - in __sbi_store()
340 F2FS_OPTION(sbi).root_reserved_blocks - in __sbi_store()
341 sbi->blocks_per_seg * in __sbi_store()
342 SM_I(sbi)->additional_reserved_segments)) { in __sbi_store()
343 spin_unlock(&sbi->stat_lock); in __sbi_store()
347 sbi->current_reserved_blocks = min(sbi->reserved_blocks, in __sbi_store()
348 sbi->user_block_count - valid_user_blocks(sbi)); in __sbi_store()
349 spin_unlock(&sbi->stat_lock); in __sbi_store()
363 if (t == 0 || t > sbi->segs_per_sec) in __sbi_store()
372 sbi->gc_mode = GC_NORMAL; in __sbi_store()
374 sbi->gc_mode = GC_URGENT_HIGH; in __sbi_store()
375 if (sbi->gc_thread) { in __sbi_store()
376 sbi->gc_thread->gc_wake = 1; in __sbi_store()
378 &sbi->gc_thread->gc_wait_queue_head); in __sbi_store()
379 wake_up_discard_thread(sbi, true); in __sbi_store()
382 sbi->gc_mode = GC_URGENT_LOW; in __sbi_store()
390 sbi->gc_mode = GC_IDLE_CB; in __sbi_store()
392 sbi->gc_mode = GC_IDLE_GREEDY; in __sbi_store()
394 if (!sbi->am.atgc_enabled) in __sbi_store()
396 sbi->gc_mode = GC_IDLE_AT; in __sbi_store()
398 sbi->gc_mode = GC_NORMAL; in __sbi_store()
404 sbi->iostat_enable = !!t; in __sbi_store()
405 if (!sbi->iostat_enable) in __sbi_store()
406 f2fs_reset_iostat(sbi); in __sbi_store()
413 spin_lock_irq(&sbi->iostat_lock); in __sbi_store()
414 sbi->iostat_period_ms = (unsigned int)t; in __sbi_store()
415 spin_unlock_irq(&sbi->iostat_lock); in __sbi_store()
425 struct f2fs_sb_info *sbi, in f2fs_sbi_store() argument
433 if (!down_read_trylock(&sbi->sb->s_umount)) in f2fs_sbi_store()
436 ret = __sbi_store(a, sbi, buf, count); in f2fs_sbi_store()
438 up_read(&sbi->sb->s_umount); in f2fs_sbi_store()
446 struct f2fs_sb_info *sbi = container_of(kobj, struct f2fs_sb_info, in f2fs_attr_show() local
450 return a->show ? a->show(a, sbi, buf) : 0; in f2fs_attr_show()
456 struct f2fs_sb_info *sbi = container_of(kobj, struct f2fs_sb_info, in f2fs_attr_store() local
460 return a->store ? a->store(a, sbi, buf, len) : 0; in f2fs_attr_store()
465 struct f2fs_sb_info *sbi = container_of(kobj, struct f2fs_sb_info, in f2fs_sb_release() local
467 complete(&sbi->s_kobj_unregister); in f2fs_sb_release()
489 struct f2fs_sb_info *sbi, char *buf) in f2fs_feature_show() argument
789 struct f2fs_sb_info *sbi = F2FS_SB(sb); in segment_info_seq_show() local
791 le32_to_cpu(sbi->raw_super->segment_count_main); in segment_info_seq_show()
798 struct seg_entry *se = get_seg_entry(sbi, i); in segment_info_seq_show()
816 struct f2fs_sb_info *sbi = F2FS_SB(sb); in segment_bits_seq_show() local
818 le32_to_cpu(sbi->raw_super->segment_count_main); in segment_bits_seq_show()
825 struct seg_entry *se = get_seg_entry(sbi, i); in segment_bits_seq_show()
836 void f2fs_record_iostat(struct f2fs_sb_info *sbi) in f2fs_record_iostat() argument
841 if (time_is_after_jiffies(sbi->iostat_next_period)) in f2fs_record_iostat()
845 spin_lock(&sbi->iostat_lock); in f2fs_record_iostat()
846 if (time_is_after_jiffies(sbi->iostat_next_period)) { in f2fs_record_iostat()
847 spin_unlock(&sbi->iostat_lock); in f2fs_record_iostat()
850 sbi->iostat_next_period = jiffies + in f2fs_record_iostat()
851 msecs_to_jiffies(sbi->iostat_period_ms); in f2fs_record_iostat()
854 iostat_diff[i] = sbi->rw_iostat[i] - in f2fs_record_iostat()
855 sbi->prev_rw_iostat[i]; in f2fs_record_iostat()
856 sbi->prev_rw_iostat[i] = sbi->rw_iostat[i]; in f2fs_record_iostat()
858 spin_unlock(&sbi->iostat_lock); in f2fs_record_iostat()
860 trace_f2fs_iostat(sbi, iostat_diff); in f2fs_record_iostat()
867 struct f2fs_sb_info *sbi = F2FS_SB(sb); in iostat_info_seq_show() local
870 if (!sbi->iostat_enable) in iostat_info_seq_show()
878 sbi->rw_iostat[APP_BUFFERED_IO]); in iostat_info_seq_show()
880 sbi->rw_iostat[APP_DIRECT_IO]); in iostat_info_seq_show()
882 sbi->rw_iostat[APP_MAPPED_IO]); in iostat_info_seq_show()
886 sbi->rw_iostat[FS_DATA_IO]); in iostat_info_seq_show()
888 sbi->rw_iostat[FS_NODE_IO]); in iostat_info_seq_show()
890 sbi->rw_iostat[FS_META_IO]); in iostat_info_seq_show()
892 sbi->rw_iostat[FS_GC_DATA_IO]); in iostat_info_seq_show()
894 sbi->rw_iostat[FS_GC_NODE_IO]); in iostat_info_seq_show()
896 sbi->rw_iostat[FS_CP_DATA_IO]); in iostat_info_seq_show()
898 sbi->rw_iostat[FS_CP_NODE_IO]); in iostat_info_seq_show()
900 sbi->rw_iostat[FS_CP_META_IO]); in iostat_info_seq_show()
905 sbi->rw_iostat[APP_BUFFERED_READ_IO]); in iostat_info_seq_show()
907 sbi->rw_iostat[APP_DIRECT_READ_IO]); in iostat_info_seq_show()
909 sbi->rw_iostat[APP_MAPPED_READ_IO]); in iostat_info_seq_show()
913 sbi->rw_iostat[FS_DATA_READ_IO]); in iostat_info_seq_show()
915 sbi->rw_iostat[FS_GDATA_READ_IO]); in iostat_info_seq_show()
917 sbi->rw_iostat[FS_CDATA_READ_IO]); in iostat_info_seq_show()
919 sbi->rw_iostat[FS_NODE_READ_IO]); in iostat_info_seq_show()
921 sbi->rw_iostat[FS_META_READ_IO]); in iostat_info_seq_show()
926 sbi->rw_iostat[FS_DISCARD]); in iostat_info_seq_show()
935 struct f2fs_sb_info *sbi = F2FS_SB(sb); in victim_bits_seq_show() local
936 struct dirty_seglist_info *dirty_i = DIRTY_I(sbi); in victim_bits_seq_show()
941 for (i = 0; i < MAIN_SECS(sbi); i++) { in victim_bits_seq_show()
945 if ((i % 10) == 9 || i == (MAIN_SECS(sbi) - 1)) in victim_bits_seq_show()
956 struct f2fs_sb_info *sbi = F2FS_SB(sb); in undiscard_info_seq_show() local
957 struct dirty_seglist_info *dirty_i = DIRTY_I(sbi); in undiscard_info_seq_show()
958 struct sit_info *sit_i = SIT_I(sbi); in undiscard_info_seq_show()
959 unsigned int total_segs = le32_to_cpu(sbi->raw_super->segment_count_main); in undiscard_info_seq_show()
962 unsigned int max_blocks = sbi->blocks_per_seg; in undiscard_info_seq_show()
963 unsigned long *dmap = SIT_I(sbi)->tmp_map; in undiscard_info_seq_show()
965 if (!f2fs_realtime_discard_enable(sbi)) in undiscard_info_seq_show()
969 struct seg_entry *se = get_seg_entry(sbi, i); in undiscard_info_seq_show()
1042 int f2fs_register_sysfs(struct f2fs_sb_info *sbi) in f2fs_register_sysfs() argument
1044 struct super_block *sb = sbi->sb; in f2fs_register_sysfs()
1047 sbi->s_kobj.kset = &f2fs_kset; in f2fs_register_sysfs()
1048 init_completion(&sbi->s_kobj_unregister); in f2fs_register_sysfs()
1049 err = kobject_init_and_add(&sbi->s_kobj, &f2fs_sb_ktype, NULL, in f2fs_register_sysfs()
1052 kobject_put(&sbi->s_kobj); in f2fs_register_sysfs()
1053 wait_for_completion(&sbi->s_kobj_unregister); in f2fs_register_sysfs()
1058 sbi->s_proc = proc_mkdir(sb->s_id, f2fs_proc_root); in f2fs_register_sysfs()
1060 if (sbi->s_proc) { in f2fs_register_sysfs()
1061 proc_create_single_data("segment_info", S_IRUGO, sbi->s_proc, in f2fs_register_sysfs()
1063 proc_create_single_data("segment_bits", S_IRUGO, sbi->s_proc, in f2fs_register_sysfs()
1065 proc_create_single_data("iostat_info", S_IRUGO, sbi->s_proc, in f2fs_register_sysfs()
1067 proc_create_single_data("victim_bits", S_IRUGO, sbi->s_proc, in f2fs_register_sysfs()
1069 proc_create_single_data("undiscard_info", S_IRUGO, sbi->s_proc, in f2fs_register_sysfs()
1076 void f2fs_unregister_sysfs(struct f2fs_sb_info *sbi) in f2fs_unregister_sysfs() argument
1078 if (sbi->s_proc) { in f2fs_unregister_sysfs()
1079 remove_proc_entry("iostat_info", sbi->s_proc); in f2fs_unregister_sysfs()
1080 remove_proc_entry("segment_info", sbi->s_proc); in f2fs_unregister_sysfs()
1081 remove_proc_entry("segment_bits", sbi->s_proc); in f2fs_unregister_sysfs()
1082 remove_proc_entry("victim_bits", sbi->s_proc); in f2fs_unregister_sysfs()
1083 remove_proc_entry("undiscard_info", sbi->s_proc); in f2fs_unregister_sysfs()
1084 remove_proc_entry(sbi->sb->s_id, f2fs_proc_root); in f2fs_unregister_sysfs()
1086 kobject_del(&sbi->s_kobj); in f2fs_unregister_sysfs()
1087 kobject_put(&sbi->s_kobj); in f2fs_unregister_sysfs()
1088 wait_for_completion(&sbi->s_kobj_unregister); in f2fs_unregister_sysfs()