2 #define TRACE_SYSTEM jbd2
4 #if !defined(_TRACE_JBD2_H) || defined(TRACE_HEADER_MULTI_READ)
7 #include <linux/jbd2.h>
8 #include <linux/tracepoint.h>
10 struct transaction_chp_stats_s
;
11 struct transaction_run_stats_s
;
13 TRACE_EVENT(jbd2_checkpoint
,
15 TP_PROTO(journal_t
*journal
, int result
),
17 TP_ARGS(journal
, result
),
21 __field( int, result
)
25 __entry
->dev
= journal
->j_fs_dev
->bd_dev
;
26 __entry
->result
= result
;
29 TP_printk("dev %d,%d result %d",
30 MAJOR(__entry
->dev
), MINOR(__entry
->dev
), __entry
->result
)
33 DECLARE_EVENT_CLASS(jbd2_commit
,
35 TP_PROTO(journal_t
*journal
, transaction_t
*commit_transaction
),
37 TP_ARGS(journal
, commit_transaction
),
41 __field( char, sync_commit
)
42 __field( int, transaction
)
46 __entry
->dev
= journal
->j_fs_dev
->bd_dev
;
47 __entry
->sync_commit
= commit_transaction
->t_synchronous_commit
;
48 __entry
->transaction
= commit_transaction
->t_tid
;
51 TP_printk("dev %d,%d transaction %d sync %d",
52 MAJOR(__entry
->dev
), MINOR(__entry
->dev
),
53 __entry
->transaction
, __entry
->sync_commit
)
56 DEFINE_EVENT(jbd2_commit
, jbd2_start_commit
,
58 TP_PROTO(journal_t
*journal
, transaction_t
*commit_transaction
),
60 TP_ARGS(journal
, commit_transaction
)
63 DEFINE_EVENT(jbd2_commit
, jbd2_commit_locking
,
65 TP_PROTO(journal_t
*journal
, transaction_t
*commit_transaction
),
67 TP_ARGS(journal
, commit_transaction
)
70 DEFINE_EVENT(jbd2_commit
, jbd2_commit_flushing
,
72 TP_PROTO(journal_t
*journal
, transaction_t
*commit_transaction
),
74 TP_ARGS(journal
, commit_transaction
)
77 DEFINE_EVENT(jbd2_commit
, jbd2_commit_logging
,
79 TP_PROTO(journal_t
*journal
, transaction_t
*commit_transaction
),
81 TP_ARGS(journal
, commit_transaction
)
84 DEFINE_EVENT(jbd2_commit
, jbd2_drop_transaction
,
86 TP_PROTO(journal_t
*journal
, transaction_t
*commit_transaction
),
88 TP_ARGS(journal
, commit_transaction
)
91 TRACE_EVENT(jbd2_end_commit
,
92 TP_PROTO(journal_t
*journal
, transaction_t
*commit_transaction
),
94 TP_ARGS(journal
, commit_transaction
),
98 __field( char, sync_commit
)
99 __field( int, transaction
)
104 __entry
->dev
= journal
->j_fs_dev
->bd_dev
;
105 __entry
->sync_commit
= commit_transaction
->t_synchronous_commit
;
106 __entry
->transaction
= commit_transaction
->t_tid
;
107 __entry
->head
= journal
->j_tail_sequence
;
110 TP_printk("dev %d,%d transaction %d sync %d head %d",
111 MAJOR(__entry
->dev
), MINOR(__entry
->dev
),
112 __entry
->transaction
, __entry
->sync_commit
, __entry
->head
)
115 TRACE_EVENT(jbd2_submit_inode_data
,
116 TP_PROTO(struct inode
*inode
),
121 __field( dev_t
, dev
)
122 __field( ino_t
, ino
)
126 __entry
->dev
= inode
->i_sb
->s_dev
;
127 __entry
->ino
= inode
->i_ino
;
130 TP_printk("dev %d,%d ino %lu",
131 MAJOR(__entry
->dev
), MINOR(__entry
->dev
),
132 (unsigned long) __entry
->ino
)
135 TRACE_EVENT(jbd2_handle_start
,
136 TP_PROTO(dev_t dev
, unsigned long tid
, unsigned int type
,
137 unsigned int line_no
, int requested_blocks
),
139 TP_ARGS(dev
, tid
, type
, line_no
, requested_blocks
),
142 __field( dev_t
, dev
)
143 __field( unsigned long, tid
)
144 __field( unsigned int, type
)
145 __field( unsigned int, line_no
)
146 __field( int, requested_blocks
)
152 __entry
->type
= type
;
153 __entry
->line_no
= line_no
;
154 __entry
->requested_blocks
= requested_blocks
;
157 TP_printk("dev %d,%d tid %lu type %u line_no %u "
158 "requested_blocks %d",
159 MAJOR(__entry
->dev
), MINOR(__entry
->dev
), __entry
->tid
,
160 __entry
->type
, __entry
->line_no
, __entry
->requested_blocks
)
163 TRACE_EVENT(jbd2_handle_extend
,
164 TP_PROTO(dev_t dev
, unsigned long tid
, unsigned int type
,
165 unsigned int line_no
, int buffer_credits
,
166 int requested_blocks
),
168 TP_ARGS(dev
, tid
, type
, line_no
, buffer_credits
, requested_blocks
),
171 __field( dev_t
, dev
)
172 __field( unsigned long, tid
)
173 __field( unsigned int, type
)
174 __field( unsigned int, line_no
)
175 __field( int, buffer_credits
)
176 __field( int, requested_blocks
)
182 __entry
->type
= type
;
183 __entry
->line_no
= line_no
;
184 __entry
->buffer_credits
= buffer_credits
;
185 __entry
->requested_blocks
= requested_blocks
;
188 TP_printk("dev %d,%d tid %lu type %u line_no %u "
189 "buffer_credits %d requested_blocks %d",
190 MAJOR(__entry
->dev
), MINOR(__entry
->dev
), __entry
->tid
,
191 __entry
->type
, __entry
->line_no
, __entry
->buffer_credits
,
192 __entry
->requested_blocks
)
195 TRACE_EVENT(jbd2_handle_stats
,
196 TP_PROTO(dev_t dev
, unsigned long tid
, unsigned int type
,
197 unsigned int line_no
, int interval
, int sync
,
198 int requested_blocks
, int dirtied_blocks
),
200 TP_ARGS(dev
, tid
, type
, line_no
, interval
, sync
,
201 requested_blocks
, dirtied_blocks
),
204 __field( dev_t
, dev
)
205 __field( unsigned long, tid
)
206 __field( unsigned int, type
)
207 __field( unsigned int, line_no
)
208 __field( int, interval
)
210 __field( int, requested_blocks
)
211 __field( int, dirtied_blocks
)
217 __entry
->type
= type
;
218 __entry
->line_no
= line_no
;
219 __entry
->interval
= interval
;
220 __entry
->sync
= sync
;
221 __entry
->requested_blocks
= requested_blocks
;
222 __entry
->dirtied_blocks
= dirtied_blocks
;
225 TP_printk("dev %d,%d tid %lu type %u line_no %u interval %d "
226 "sync %d requested_blocks %d dirtied_blocks %d",
227 MAJOR(__entry
->dev
), MINOR(__entry
->dev
), __entry
->tid
,
228 __entry
->type
, __entry
->line_no
, __entry
->interval
,
229 __entry
->sync
, __entry
->requested_blocks
,
230 __entry
->dirtied_blocks
)
233 TRACE_EVENT(jbd2_run_stats
,
234 TP_PROTO(dev_t dev
, unsigned long tid
,
235 struct transaction_run_stats_s
*stats
),
237 TP_ARGS(dev
, tid
, stats
),
240 __field( dev_t
, dev
)
241 __field( unsigned long, tid
)
242 __field( unsigned long, wait
)
243 __field( unsigned long, request_delay
)
244 __field( unsigned long, running
)
245 __field( unsigned long, locked
)
246 __field( unsigned long, flushing
)
247 __field( unsigned long, logging
)
248 __field( __u32
, handle_count
)
249 __field( __u32
, blocks
)
250 __field( __u32
, blocks_logged
)
256 __entry
->wait
= stats
->rs_wait
;
257 __entry
->request_delay
= stats
->rs_request_delay
;
258 __entry
->running
= stats
->rs_running
;
259 __entry
->locked
= stats
->rs_locked
;
260 __entry
->flushing
= stats
->rs_flushing
;
261 __entry
->logging
= stats
->rs_logging
;
262 __entry
->handle_count
= stats
->rs_handle_count
;
263 __entry
->blocks
= stats
->rs_blocks
;
264 __entry
->blocks_logged
= stats
->rs_blocks_logged
;
267 TP_printk("dev %d,%d tid %lu wait %u request_delay %u running %u "
268 "locked %u flushing %u logging %u handle_count %u "
269 "blocks %u blocks_logged %u",
270 MAJOR(__entry
->dev
), MINOR(__entry
->dev
), __entry
->tid
,
271 jiffies_to_msecs(__entry
->wait
),
272 jiffies_to_msecs(__entry
->request_delay
),
273 jiffies_to_msecs(__entry
->running
),
274 jiffies_to_msecs(__entry
->locked
),
275 jiffies_to_msecs(__entry
->flushing
),
276 jiffies_to_msecs(__entry
->logging
),
277 __entry
->handle_count
, __entry
->blocks
,
278 __entry
->blocks_logged
)
281 TRACE_EVENT(jbd2_checkpoint_stats
,
282 TP_PROTO(dev_t dev
, unsigned long tid
,
283 struct transaction_chp_stats_s
*stats
),
285 TP_ARGS(dev
, tid
, stats
),
288 __field( dev_t
, dev
)
289 __field( unsigned long, tid
)
290 __field( unsigned long, chp_time
)
291 __field( __u32
, forced_to_close
)
292 __field( __u32
, written
)
293 __field( __u32
, dropped
)
299 __entry
->chp_time
= stats
->cs_chp_time
;
300 __entry
->forced_to_close
= stats
->cs_forced_to_close
;
301 __entry
->written
= stats
->cs_written
;
302 __entry
->dropped
= stats
->cs_dropped
;
305 TP_printk("dev %d,%d tid %lu chp_time %u forced_to_close %u "
306 "written %u dropped %u",
307 MAJOR(__entry
->dev
), MINOR(__entry
->dev
), __entry
->tid
,
308 jiffies_to_msecs(__entry
->chp_time
),
309 __entry
->forced_to_close
, __entry
->written
, __entry
->dropped
)
312 TRACE_EVENT(jbd2_update_log_tail
,
314 TP_PROTO(journal_t
*journal
, tid_t first_tid
,
315 unsigned long block_nr
, unsigned long freed
),
317 TP_ARGS(journal
, first_tid
, block_nr
, freed
),
320 __field( dev_t
, dev
)
321 __field( tid_t
, tail_sequence
)
322 __field( tid_t
, first_tid
)
323 __field(unsigned long, block_nr
)
324 __field(unsigned long, freed
)
328 __entry
->dev
= journal
->j_fs_dev
->bd_dev
;
329 __entry
->tail_sequence
= journal
->j_tail_sequence
;
330 __entry
->first_tid
= first_tid
;
331 __entry
->block_nr
= block_nr
;
332 __entry
->freed
= freed
;
335 TP_printk("dev %d,%d from %u to %u offset %lu freed %lu",
336 MAJOR(__entry
->dev
), MINOR(__entry
->dev
),
337 __entry
->tail_sequence
, __entry
->first_tid
,
338 __entry
->block_nr
, __entry
->freed
)
341 TRACE_EVENT(jbd2_write_superblock
,
343 TP_PROTO(journal_t
*journal
, int write_op
),
345 TP_ARGS(journal
, write_op
),
348 __field( dev_t
, dev
)
349 __field( int, write_op
)
353 __entry
->dev
= journal
->j_fs_dev
->bd_dev
;
354 __entry
->write_op
= write_op
;
357 TP_printk("dev %d,%d write_op %x", MAJOR(__entry
->dev
),
358 MINOR(__entry
->dev
), __entry
->write_op
)
361 TRACE_EVENT(jbd2_lock_buffer_stall
,
363 TP_PROTO(dev_t dev
, unsigned long stall_ms
),
365 TP_ARGS(dev
, stall_ms
),
368 __field( dev_t
, dev
)
369 __field(unsigned long, stall_ms
)
374 __entry
->stall_ms
= stall_ms
;
377 TP_printk("dev %d,%d stall_ms %lu",
378 MAJOR(__entry
->dev
), MINOR(__entry
->dev
),
382 #endif /* _TRACE_JBD2_H */
384 /* This part must be outside protection */
385 #include <trace/define_trace.h>