Lines Matching refs:sbi

20 static inline unsigned long long iostat_get_avg_bytes(struct f2fs_sb_info *sbi,
23 return sbi->iostat_count[type] ? div64_u64(sbi->iostat_bytes[type],
24 sbi->iostat_count[type]) : 0;
29 name":", sbi->iostat_bytes[type], \
30 sbi->iostat_count[type], \
31 iostat_get_avg_bytes(sbi, type))
36 struct f2fs_sb_info *sbi = F2FS_SB(sb);
38 if (!sbi->iostat_enable)
88 static inline void __record_iostat_latency(struct f2fs_sb_info *sbi)
92 struct iostat_lat_info *io_lat = sbi->iostat_io_lat;
95 spin_lock_irqsave(&sbi->iostat_lat_lock, flags);
108 spin_unlock_irqrestore(&sbi->iostat_lat_lock, flags);
110 trace_f2fs_iostat_latency(sbi, iostat_lat);
113 static inline void f2fs_record_iostat(struct f2fs_sb_info *sbi)
119 if (time_is_after_jiffies(sbi->iostat_next_period))
123 spin_lock_irqsave(&sbi->iostat_lock, flags);
124 if (time_is_after_jiffies(sbi->iostat_next_period)) {
125 spin_unlock_irqrestore(&sbi->iostat_lock, flags);
128 sbi->iostat_next_period = jiffies +
129 msecs_to_jiffies(sbi->iostat_period_ms);
132 iostat_diff[i] = sbi->iostat_bytes[i] -
133 sbi->prev_iostat_bytes[i];
134 sbi->prev_iostat_bytes[i] = sbi->iostat_bytes[i];
136 spin_unlock_irqrestore(&sbi->iostat_lock, flags);
138 trace_f2fs_iostat(sbi, iostat_diff);
140 __record_iostat_latency(sbi);
143 void f2fs_reset_iostat(struct f2fs_sb_info *sbi)
145 struct iostat_lat_info *io_lat = sbi->iostat_io_lat;
148 spin_lock_irq(&sbi->iostat_lock);
150 sbi->iostat_count[i] = 0;
151 sbi->iostat_bytes[i] = 0;
152 sbi->prev_iostat_bytes[i] = 0;
154 spin_unlock_irq(&sbi->iostat_lock);
156 spin_lock_irq(&sbi->iostat_lat_lock);
158 spin_unlock_irq(&sbi->iostat_lat_lock);
161 static inline void __f2fs_update_iostat(struct f2fs_sb_info *sbi,
164 sbi->iostat_bytes[type] += io_bytes;
165 sbi->iostat_count[type]++;
168 void f2fs_update_iostat(struct f2fs_sb_info *sbi, struct inode *inode,
173 if (!sbi->iostat_enable)
176 spin_lock_irqsave(&sbi->iostat_lock, flags);
177 __f2fs_update_iostat(sbi, type, io_bytes);
180 __f2fs_update_iostat(sbi, APP_WRITE_IO, io_bytes);
183 __f2fs_update_iostat(sbi, APP_READ_IO, io_bytes);
188 __f2fs_update_iostat(sbi, APP_BUFFERED_CDATA_IO, io_bytes);
191 __f2fs_update_iostat(sbi, APP_BUFFERED_CDATA_READ_IO, io_bytes);
194 __f2fs_update_iostat(sbi, APP_MAPPED_CDATA_READ_IO, io_bytes);
197 __f2fs_update_iostat(sbi, APP_MAPPED_CDATA_IO, io_bytes);
200 __f2fs_update_iostat(sbi, FS_CDATA_READ_IO, io_bytes);
203 __f2fs_update_iostat(sbi, FS_CDATA_IO, io_bytes);
207 spin_unlock_irqrestore(&sbi->iostat_lock, flags);
209 f2fs_record_iostat(sbi);
217 struct f2fs_sb_info *sbi = iostat_ctx->sbi;
218 struct iostat_lat_info *io_lat = sbi->iostat_io_lat;
221 if (!sbi->iostat_enable)
228 f2fs_warn(sbi, "%s: %d over NR_PAGE_TYPE", __func__, page_type);
232 spin_lock_irqsave(&sbi->iostat_lat_lock, flags);
237 spin_unlock_irqrestore(&sbi->iostat_lat_lock, flags);
248 bio->bi_private = iostat_ctx->sbi;
258 void iostat_alloc_and_bind_ctx(struct f2fs_sb_info *sbi,
264 iostat_ctx->sbi = sbi;
297 int f2fs_init_iostat(struct f2fs_sb_info *sbi)
300 spin_lock_init(&sbi->iostat_lock);
301 spin_lock_init(&sbi->iostat_lat_lock);
302 sbi->iostat_enable = false;
303 sbi->iostat_period_ms = DEFAULT_IOSTAT_PERIOD_MS;
304 sbi->iostat_io_lat = f2fs_kzalloc(sbi, sizeof(struct iostat_lat_info),
306 if (!sbi->iostat_io_lat)
312 void f2fs_destroy_iostat(struct f2fs_sb_info *sbi)
314 kfree(sbi->iostat_io_lat);