Lines Matching refs:sbi

54 			     struct f2fs_sb_info *sbi, char *buf);
56 static unsigned char *__struct_ptr(struct f2fs_sb_info *sbi, int struct_type) in __struct_ptr() argument
59 return (unsigned char *)sbi->gc_thread; in __struct_ptr()
61 return (unsigned char *)SM_I(sbi); in __struct_ptr()
63 return (unsigned char *)SM_I(sbi)->dcc_info; in __struct_ptr()
65 return (unsigned char *)NM_I(sbi); in __struct_ptr()
67 return (unsigned char *)sbi; in __struct_ptr()
71 return (unsigned char *)&F2FS_OPTION(sbi).fault_info; in __struct_ptr()
75 return (unsigned char *)F2FS_STAT(sbi); in __struct_ptr()
78 return (unsigned char *)&sbi->cprc_info; in __struct_ptr()
80 return (unsigned char *)&sbi->am; in __struct_ptr()
85 struct f2fs_sb_info *sbi, char *buf) in dirty_segments_show() argument
88 (unsigned long long)(dirty_segments(sbi))); in dirty_segments_show()
92 struct f2fs_sb_info *sbi, char *buf) in free_segments_show() argument
95 (unsigned long long)(free_segments(sbi))); in free_segments_show()
99 struct f2fs_sb_info *sbi, char *buf) in ovp_segments_show() argument
102 (unsigned long long)(overprovision_segments(sbi))); in ovp_segments_show()
106 struct f2fs_sb_info *sbi, char *buf) in lifetime_write_kbytes_show() argument
109 (unsigned long long)(sbi->kbytes_written + in lifetime_write_kbytes_show()
110 ((f2fs_get_sectors_written(sbi) - in lifetime_write_kbytes_show()
111 sbi->sectors_written_start) >> 1))); in lifetime_write_kbytes_show()
115 struct f2fs_sb_info *sbi, char *buf) in sb_status_show() argument
117 return sprintf(buf, "%lx\n", sbi->s_flag); in sb_status_show()
121 struct f2fs_sb_info *sbi, char *buf) in pending_discard_show() argument
123 if (!SM_I(sbi)->dcc_info) in pending_discard_show()
126 &SM_I(sbi)->dcc_info->discard_cmd_cnt)); in pending_discard_show()
130 struct f2fs_sb_info *sbi, char *buf) in features_show() argument
134 if (f2fs_sb_has_encrypt(sbi)) in features_show()
137 if (f2fs_sb_has_blkzoned(sbi)) in features_show()
140 if (f2fs_sb_has_extra_attr(sbi)) in features_show()
143 if (f2fs_sb_has_project_quota(sbi)) in features_show()
146 if (f2fs_sb_has_inode_chksum(sbi)) in features_show()
149 if (f2fs_sb_has_flexible_inline_xattr(sbi)) in features_show()
152 if (f2fs_sb_has_quota_ino(sbi)) in features_show()
155 if (f2fs_sb_has_inode_crtime(sbi)) in features_show()
158 if (f2fs_sb_has_lost_found(sbi)) in features_show()
161 if (f2fs_sb_has_verity(sbi)) in features_show()
164 if (f2fs_sb_has_sb_chksum(sbi)) in features_show()
167 if (f2fs_sb_has_casefold(sbi)) in features_show()
170 if (f2fs_sb_has_readonly(sbi)) in features_show()
173 if (f2fs_sb_has_compression(sbi)) in features_show()
183 struct f2fs_sb_info *sbi, char *buf) in current_reserved_blocks_show() argument
185 return sprintf(buf, "%u\n", sbi->current_reserved_blocks); in current_reserved_blocks_show()
189 struct f2fs_sb_info *sbi, char *buf) in unusable_show() argument
193 if (test_opt(sbi, DISABLE_CHECKPOINT)) in unusable_show()
194 unusable = sbi->unusable_block_count; in unusable_show()
196 unusable = f2fs_get_unusable_blocks(sbi); in unusable_show()
201 struct f2fs_sb_info *sbi, char *buf) in encoding_show() argument
204 struct super_block *sb = sbi->sb; in encoding_show()
206 if (f2fs_sb_has_casefold(sbi)) in encoding_show()
217 struct f2fs_sb_info *sbi, char *buf) in mounted_time_sec_show() argument
219 return sprintf(buf, "%llu", SIT_I(sbi)->mounted_time); in mounted_time_sec_show()
224 struct f2fs_sb_info *sbi, char *buf) in moved_blocks_foreground_show() argument
226 struct f2fs_stat_info *si = F2FS_STAT(sbi); in moved_blocks_foreground_show()
234 struct f2fs_sb_info *sbi, char *buf) in moved_blocks_background_show() argument
236 struct f2fs_stat_info *si = F2FS_STAT(sbi); in moved_blocks_background_show()
243 struct f2fs_sb_info *sbi, char *buf) in avg_vblocks_show() argument
245 struct f2fs_stat_info *si = F2FS_STAT(sbi); in avg_vblocks_show()
247 si->dirty_count = dirty_segments(sbi); in avg_vblocks_show()
248 f2fs_update_sit_info(sbi); in avg_vblocks_show()
254 struct f2fs_sb_info *sbi, char *buf) in main_blkaddr_show() argument
257 (unsigned long long)MAIN_BLKADDR(sbi)); in main_blkaddr_show()
261 struct f2fs_sb_info *sbi, char *buf) in f2fs_sbi_show() argument
266 ptr = __struct_ptr(sbi, a->struct_type); in f2fs_sbi_show()
272 sbi->raw_super->extension_list; in f2fs_sbi_show()
273 int cold_count = le32_to_cpu(sbi->raw_super->extension_count); in f2fs_sbi_show()
274 int hot_count = sbi->raw_super->hot_ext_count; in f2fs_sbi_show()
292 struct ckpt_req_control *cprc = &sbi->cprc_info; in f2fs_sbi_show()
310 return sysfs_emit(buf, "%llu\n", sbi->compr_written_block); in f2fs_sbi_show()
313 return sysfs_emit(buf, "%llu\n", sbi->compr_saved_block); in f2fs_sbi_show()
316 return sysfs_emit(buf, "%u\n", sbi->compr_new_inode); in f2fs_sbi_show()
320 return sysfs_emit(buf, "%u\n", sbi->gc_segment_mode); in f2fs_sbi_show()
324 sbi->gc_reclaimed_segs[sbi->gc_segment_mode]); in f2fs_sbi_show()
333 struct f2fs_sb_info *sbi, in __sbi_store() argument
341 ptr = __struct_ptr(sbi, a->struct_type); in __sbi_store()
366 f2fs_down_write(&sbi->sb_lock); in __sbi_store()
368 ret = f2fs_update_extension_list(sbi, name, hot, set); in __sbi_store()
372 ret = f2fs_commit_super(sbi, false); in __sbi_store()
374 f2fs_update_extension_list(sbi, name, hot, !set); in __sbi_store()
376 f2fs_up_write(&sbi->sb_lock); in __sbi_store()
382 struct ckpt_req_control *cprc = &sbi->cprc_info; in __sbi_store()
402 if (test_opt(sbi, MERGE_CHECKPOINT)) { in __sbi_store()
424 spin_lock(&sbi->stat_lock); in __sbi_store()
425 if (t > (unsigned long)(sbi->user_block_count - in __sbi_store()
426 F2FS_OPTION(sbi).root_reserved_blocks - in __sbi_store()
427 sbi->blocks_per_seg * in __sbi_store()
428 SM_I(sbi)->additional_reserved_segments)) { in __sbi_store()
429 spin_unlock(&sbi->stat_lock); in __sbi_store()
433 sbi->current_reserved_blocks = min(sbi->reserved_blocks, in __sbi_store()
434 sbi->user_block_count - valid_user_blocks(sbi)); in __sbi_store()
435 spin_unlock(&sbi->stat_lock); in __sbi_store()
449 if (t == 0 || t > sbi->segs_per_sec) in __sbi_store()
458 sbi->gc_mode = GC_NORMAL; in __sbi_store()
460 sbi->gc_mode = GC_URGENT_HIGH; in __sbi_store()
461 if (sbi->gc_thread) { in __sbi_store()
462 sbi->gc_thread->gc_wake = 1; in __sbi_store()
464 &sbi->gc_thread->gc_wait_queue_head); in __sbi_store()
465 wake_up_discard_thread(sbi, true); in __sbi_store()
468 sbi->gc_mode = GC_URGENT_LOW; in __sbi_store()
476 sbi->gc_mode = GC_IDLE_CB; in __sbi_store()
478 sbi->gc_mode = GC_IDLE_GREEDY; in __sbi_store()
480 if (!sbi->am.atgc_enabled) in __sbi_store()
482 sbi->gc_mode = GC_IDLE_AT; in __sbi_store()
484 sbi->gc_mode = GC_NORMAL; in __sbi_store()
490 sbi->iostat_enable = !!t; in __sbi_store()
491 if (!sbi->iostat_enable) in __sbi_store()
492 f2fs_reset_iostat(sbi); in __sbi_store()
499 spin_lock(&sbi->iostat_lock); in __sbi_store()
500 sbi->iostat_period_ms = (unsigned int)t; in __sbi_store()
501 spin_unlock(&sbi->iostat_lock); in __sbi_store()
510 sbi->compr_written_block = 0; in __sbi_store()
511 sbi->compr_saved_block = 0; in __sbi_store()
518 sbi->compr_new_inode = 0; in __sbi_store()
526 sbi->am.candidate_ratio = t; in __sbi_store()
533 sbi->am.age_weight = t; in __sbi_store()
539 sbi->gc_segment_mode = t; in __sbi_store()
548 sbi->gc_reclaimed_segs[sbi->gc_segment_mode] = 0; in __sbi_store()
553 if (t == 0 || t >= sbi->warm_data_age_threshold) in __sbi_store()
562 if (t == 0 || t <= sbi->hot_data_age_threshold) in __sbi_store()
585 struct f2fs_sb_info *sbi, in f2fs_sbi_store() argument
593 if (!down_read_trylock(&sbi->sb->s_umount)) in f2fs_sbi_store()
596 ret = __sbi_store(a, sbi, buf, count); in f2fs_sbi_store()
598 up_read(&sbi->sb->s_umount); in f2fs_sbi_store()
606 struct f2fs_sb_info *sbi = container_of(kobj, struct f2fs_sb_info, in f2fs_attr_show() local
610 return a->show ? a->show(a, sbi, buf) : 0; in f2fs_attr_show()
616 struct f2fs_sb_info *sbi = container_of(kobj, struct f2fs_sb_info, in f2fs_attr_store() local
620 return a->store ? a->store(a, sbi, buf, len) : 0; in f2fs_attr_store()
625 struct f2fs_sb_info *sbi = container_of(kobj, struct f2fs_sb_info, in f2fs_sb_release() local
627 complete(&sbi->s_kobj_unregister); in f2fs_sb_release()
649 struct f2fs_sb_info *sbi, char *buf) in f2fs_feature_show() argument
661 struct f2fs_sb_info *sbi, char *buf) in f2fs_sb_feature_show() argument
663 if (F2FS_HAS_FEATURE(sbi, a->id)) in f2fs_sb_feature_show()
1002 struct f2fs_sb_info *sbi = container_of(kobj, struct f2fs_sb_info, in f2fs_stat_attr_show() local
1006 return a->show ? a->show(a, sbi, buf) : 0; in f2fs_stat_attr_show()
1012 struct f2fs_sb_info *sbi = container_of(kobj, struct f2fs_sb_info, in f2fs_stat_attr_store() local
1016 return a->store ? a->store(a, sbi, buf, len) : 0; in f2fs_stat_attr_store()
1021 struct f2fs_sb_info *sbi = container_of(kobj, struct f2fs_sb_info, in f2fs_stat_kobj_release() local
1023 complete(&sbi->s_stat_kobj_unregister); in f2fs_stat_kobj_release()
1040 struct f2fs_sb_info *sbi = container_of(kobj, struct f2fs_sb_info, in f2fs_sb_feat_attr_show() local
1044 return a->show ? a->show(a, sbi, buf) : 0; in f2fs_sb_feat_attr_show()
1049 struct f2fs_sb_info *sbi = container_of(kobj, struct f2fs_sb_info, in f2fs_feature_list_kobj_release() local
1051 complete(&sbi->s_feature_list_kobj_unregister); in f2fs_feature_list_kobj_release()
1068 struct f2fs_sb_info *sbi = F2FS_SB(sb); in segment_info_seq_show() local
1070 le32_to_cpu(sbi->raw_super->segment_count_main); in segment_info_seq_show()
1077 struct seg_entry *se = get_seg_entry(sbi, i); in segment_info_seq_show()
1095 struct f2fs_sb_info *sbi = F2FS_SB(sb); in segment_bits_seq_show() local
1097 le32_to_cpu(sbi->raw_super->segment_count_main); in segment_bits_seq_show()
1104 struct seg_entry *se = get_seg_entry(sbi, i); in segment_bits_seq_show()
1115 void f2fs_record_iostat(struct f2fs_sb_info *sbi) in f2fs_record_iostat() argument
1120 if (time_is_after_jiffies(sbi->iostat_next_period)) in f2fs_record_iostat()
1124 spin_lock(&sbi->iostat_lock); in f2fs_record_iostat()
1125 if (time_is_after_jiffies(sbi->iostat_next_period)) { in f2fs_record_iostat()
1126 spin_unlock(&sbi->iostat_lock); in f2fs_record_iostat()
1129 sbi->iostat_next_period = jiffies + in f2fs_record_iostat()
1130 msecs_to_jiffies(sbi->iostat_period_ms); in f2fs_record_iostat()
1133 iostat_diff[i] = sbi->rw_iostat[i] - in f2fs_record_iostat()
1134 sbi->prev_rw_iostat[i]; in f2fs_record_iostat()
1135 sbi->prev_rw_iostat[i] = sbi->rw_iostat[i]; in f2fs_record_iostat()
1137 spin_unlock(&sbi->iostat_lock); in f2fs_record_iostat()
1139 trace_f2fs_iostat(sbi, iostat_diff); in f2fs_record_iostat()
1146 struct f2fs_sb_info *sbi = F2FS_SB(sb); in iostat_info_seq_show() local
1149 if (!sbi->iostat_enable) in iostat_info_seq_show()
1157 sbi->rw_iostat[APP_BUFFERED_IO]); in iostat_info_seq_show()
1159 sbi->rw_iostat[APP_DIRECT_IO]); in iostat_info_seq_show()
1161 sbi->rw_iostat[APP_MAPPED_IO]); in iostat_info_seq_show()
1165 sbi->rw_iostat[FS_DATA_IO]); in iostat_info_seq_show()
1167 sbi->rw_iostat[FS_NODE_IO]); in iostat_info_seq_show()
1169 sbi->rw_iostat[FS_META_IO]); in iostat_info_seq_show()
1171 sbi->rw_iostat[FS_GC_DATA_IO]); in iostat_info_seq_show()
1173 sbi->rw_iostat[FS_GC_NODE_IO]); in iostat_info_seq_show()
1175 sbi->rw_iostat[FS_CP_DATA_IO]); in iostat_info_seq_show()
1177 sbi->rw_iostat[FS_CP_NODE_IO]); in iostat_info_seq_show()
1179 sbi->rw_iostat[FS_CP_META_IO]); in iostat_info_seq_show()
1184 sbi->rw_iostat[APP_BUFFERED_READ_IO]); in iostat_info_seq_show()
1186 sbi->rw_iostat[APP_DIRECT_READ_IO]); in iostat_info_seq_show()
1188 sbi->rw_iostat[APP_MAPPED_READ_IO]); in iostat_info_seq_show()
1192 sbi->rw_iostat[FS_DATA_READ_IO]); in iostat_info_seq_show()
1194 sbi->rw_iostat[FS_GDATA_READ_IO]); in iostat_info_seq_show()
1196 sbi->rw_iostat[FS_CDATA_READ_IO]); in iostat_info_seq_show()
1198 sbi->rw_iostat[FS_NODE_READ_IO]); in iostat_info_seq_show()
1200 sbi->rw_iostat[FS_META_READ_IO]); in iostat_info_seq_show()
1205 sbi->rw_iostat[FS_DISCARD]); in iostat_info_seq_show()
1214 struct f2fs_sb_info *sbi = F2FS_SB(sb); in victim_bits_seq_show() local
1215 struct dirty_seglist_info *dirty_i = DIRTY_I(sbi); in victim_bits_seq_show()
1220 for (i = 0; i < MAIN_SECS(sbi); i++) { in victim_bits_seq_show()
1224 if ((i % 10) == 9 || i == (MAIN_SECS(sbi) - 1)) in victim_bits_seq_show()
1261 int f2fs_register_sysfs(struct f2fs_sb_info *sbi) in f2fs_register_sysfs() argument
1263 struct super_block *sb = sbi->sb; in f2fs_register_sysfs()
1266 sbi->s_kobj.kset = &f2fs_kset; in f2fs_register_sysfs()
1267 init_completion(&sbi->s_kobj_unregister); in f2fs_register_sysfs()
1268 err = kobject_init_and_add(&sbi->s_kobj, &f2fs_sb_ktype, NULL, in f2fs_register_sysfs()
1273 sbi->s_stat_kobj.kset = &f2fs_kset; in f2fs_register_sysfs()
1274 init_completion(&sbi->s_stat_kobj_unregister); in f2fs_register_sysfs()
1275 err = kobject_init_and_add(&sbi->s_stat_kobj, &f2fs_stat_ktype, in f2fs_register_sysfs()
1276 &sbi->s_kobj, "stat"); in f2fs_register_sysfs()
1280 sbi->s_feature_list_kobj.kset = &f2fs_kset; in f2fs_register_sysfs()
1281 init_completion(&sbi->s_feature_list_kobj_unregister); in f2fs_register_sysfs()
1282 err = kobject_init_and_add(&sbi->s_feature_list_kobj, in f2fs_register_sysfs()
1284 &sbi->s_kobj, "feature_list"); in f2fs_register_sysfs()
1289 sbi->s_proc = proc_mkdir(sb->s_id, f2fs_proc_root); in f2fs_register_sysfs()
1291 if (sbi->s_proc) { in f2fs_register_sysfs()
1292 proc_create_single_data("segment_info", S_IRUGO, sbi->s_proc, in f2fs_register_sysfs()
1294 proc_create_single_data("segment_bits", S_IRUGO, sbi->s_proc, in f2fs_register_sysfs()
1296 proc_create_single_data("iostat_info", S_IRUGO, sbi->s_proc, in f2fs_register_sysfs()
1298 proc_create_single_data("victim_bits", S_IRUGO, sbi->s_proc, in f2fs_register_sysfs()
1303 kobject_put(&sbi->s_feature_list_kobj); in f2fs_register_sysfs()
1304 wait_for_completion(&sbi->s_feature_list_kobj_unregister); in f2fs_register_sysfs()
1306 kobject_put(&sbi->s_stat_kobj); in f2fs_register_sysfs()
1307 wait_for_completion(&sbi->s_stat_kobj_unregister); in f2fs_register_sysfs()
1309 kobject_put(&sbi->s_kobj); in f2fs_register_sysfs()
1310 wait_for_completion(&sbi->s_kobj_unregister); in f2fs_register_sysfs()
1314 void f2fs_unregister_sysfs(struct f2fs_sb_info *sbi) in f2fs_unregister_sysfs() argument
1316 if (sbi->s_proc) { in f2fs_unregister_sysfs()
1317 remove_proc_entry("iostat_info", sbi->s_proc); in f2fs_unregister_sysfs()
1318 remove_proc_entry("segment_info", sbi->s_proc); in f2fs_unregister_sysfs()
1319 remove_proc_entry("segment_bits", sbi->s_proc); in f2fs_unregister_sysfs()
1320 remove_proc_entry("victim_bits", sbi->s_proc); in f2fs_unregister_sysfs()
1321 remove_proc_entry(sbi->sb->s_id, f2fs_proc_root); in f2fs_unregister_sysfs()
1324 kobject_del(&sbi->s_stat_kobj); in f2fs_unregister_sysfs()
1325 kobject_put(&sbi->s_stat_kobj); in f2fs_unregister_sysfs()
1326 wait_for_completion(&sbi->s_stat_kobj_unregister); in f2fs_unregister_sysfs()
1327 kobject_del(&sbi->s_feature_list_kobj); in f2fs_unregister_sysfs()
1328 kobject_put(&sbi->s_feature_list_kobj); in f2fs_unregister_sysfs()
1329 wait_for_completion(&sbi->s_feature_list_kobj_unregister); in f2fs_unregister_sysfs()
1331 kobject_del(&sbi->s_kobj); in f2fs_unregister_sysfs()
1332 kobject_put(&sbi->s_kobj); in f2fs_unregister_sysfs()
1333 wait_for_completion(&sbi->s_kobj_unregister); in f2fs_unregister_sysfs()