1 /* SPDX-License-Identifier: GPL-2.0-only */
3 #define TRACE_SYSTEM jbd2
5 #if !defined(LTTNG_TRACE_JBD2_H) || defined(TRACE_HEADER_MULTI_READ)
6 #define LTTNG_TRACE_JBD2_H
8 #include <lttng/tracepoint-event.h>
9 #include <linux/jbd2.h>
10 #include <lttng/kernel-version.h>
12 #ifndef _TRACE_JBD2_DEF
13 #define _TRACE_JBD2_DEF
14 struct transaction_chp_stats_s
;
15 struct transaction_run_stats_s
;
18 LTTNG_TRACEPOINT_EVENT(jbd2_checkpoint
,
20 TP_PROTO(journal_t
*journal
, int result
),
22 TP_ARGS(journal
, result
),
25 ctf_integer(dev_t
, dev
, journal
->j_fs_dev
->bd_dev
)
26 ctf_integer(int, result
, result
)
30 #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(6,2,0) \
31 || LTTNG_KERNEL_RANGE(5,15,87, 5,16,0) \
32 || LTTNG_KERNEL_RANGE(6,0,18, 6,1,0) \
33 || LTTNG_KERNEL_RANGE(6,1,4, 6,2,0))
34 LTTNG_TRACEPOINT_EVENT_CLASS(jbd2_commit
,
36 TP_PROTO(journal_t
*journal
, transaction_t
*commit_transaction
),
38 TP_ARGS(journal
, commit_transaction
),
41 ctf_integer(dev_t
, dev
, journal
->j_fs_dev
->bd_dev
)
42 ctf_integer(char, sync_commit
, commit_transaction
->t_synchronous_commit
)
43 ctf_integer(tid_t
, transaction
, commit_transaction
->t_tid
)
47 LTTNG_TRACEPOINT_EVENT_CLASS(jbd2_commit
,
49 TP_PROTO(journal_t
*journal
, transaction_t
*commit_transaction
),
51 TP_ARGS(journal
, commit_transaction
),
54 ctf_integer(dev_t
, dev
, journal
->j_fs_dev
->bd_dev
)
55 ctf_integer(char, sync_commit
, commit_transaction
->t_synchronous_commit
)
56 ctf_integer(int, transaction
, commit_transaction
->t_tid
)
61 LTTNG_TRACEPOINT_EVENT_INSTANCE(jbd2_commit
, jbd2_start_commit
,
63 TP_PROTO(journal_t
*journal
, transaction_t
*commit_transaction
),
65 TP_ARGS(journal
, commit_transaction
)
68 LTTNG_TRACEPOINT_EVENT_INSTANCE(jbd2_commit
, jbd2_commit_locking
,
70 TP_PROTO(journal_t
*journal
, transaction_t
*commit_transaction
),
72 TP_ARGS(journal
, commit_transaction
)
75 LTTNG_TRACEPOINT_EVENT_INSTANCE(jbd2_commit
, jbd2_commit_flushing
,
77 TP_PROTO(journal_t
*journal
, transaction_t
*commit_transaction
),
79 TP_ARGS(journal
, commit_transaction
)
82 LTTNG_TRACEPOINT_EVENT_INSTANCE(jbd2_commit
, jbd2_commit_logging
,
84 TP_PROTO(journal_t
*journal
, transaction_t
*commit_transaction
),
86 TP_ARGS(journal
, commit_transaction
)
89 #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(3,4,0))
90 LTTNG_TRACEPOINT_EVENT_INSTANCE(jbd2_commit
, jbd2_drop_transaction
,
92 TP_PROTO(journal_t
*journal
, transaction_t
*commit_transaction
),
94 TP_ARGS(journal
, commit_transaction
)
98 #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(6,2,0) \
99 || LTTNG_KERNEL_RANGE(5,15,87, 5,16,0) \
100 || LTTNG_KERNEL_RANGE(6,0,18, 6,1,0) \
101 || LTTNG_KERNEL_RANGE(6,1,4, 6,2,0))
102 LTTNG_TRACEPOINT_EVENT(jbd2_end_commit
,
103 TP_PROTO(journal_t
*journal
, transaction_t
*commit_transaction
),
105 TP_ARGS(journal
, commit_transaction
),
108 ctf_integer(dev_t
, dev
, journal
->j_fs_dev
->bd_dev
)
109 ctf_integer(char, sync_commit
, commit_transaction
->t_synchronous_commit
)
110 ctf_integer(tid_t
, transaction
, commit_transaction
->t_tid
)
111 ctf_integer(tid_t
, head
, journal
->j_tail_sequence
)
115 LTTNG_TRACEPOINT_EVENT(jbd2_end_commit
,
116 TP_PROTO(journal_t
*journal
, transaction_t
*commit_transaction
),
118 TP_ARGS(journal
, commit_transaction
),
121 ctf_integer(dev_t
, dev
, journal
->j_fs_dev
->bd_dev
)
122 ctf_integer(char, sync_commit
, commit_transaction
->t_synchronous_commit
)
123 ctf_integer(int, transaction
, commit_transaction
->t_tid
)
124 ctf_integer(int, head
, journal
->j_tail_sequence
)
129 LTTNG_TRACEPOINT_EVENT(jbd2_submit_inode_data
,
130 TP_PROTO(struct inode
*inode
),
135 ctf_integer(dev_t
, dev
, inode
->i_sb
->s_dev
)
136 ctf_integer(ino_t
, ino
, inode
->i_ino
)
140 #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(6,2,0) \
141 || LTTNG_KERNEL_RANGE(5,15,87, 5,16,0) \
142 || LTTNG_KERNEL_RANGE(6,0,18, 6,1,0) \
143 || LTTNG_KERNEL_RANGE(6,1,4, 6,2,0))
144 LTTNG_TRACEPOINT_EVENT(jbd2_run_stats
,
145 TP_PROTO(dev_t dev
, tid_t tid
,
146 struct transaction_run_stats_s
*stats
),
148 TP_ARGS(dev
, tid
, stats
),
151 ctf_integer(dev_t
, dev
, dev
)
152 ctf_integer(tid_t
, tid
, tid
)
153 ctf_integer(unsigned long, wait
, stats
->rs_wait
)
154 ctf_integer(unsigned long, running
, stats
->rs_running
)
155 ctf_integer(unsigned long, locked
, stats
->rs_locked
)
156 ctf_integer(unsigned long, flushing
, stats
->rs_flushing
)
157 ctf_integer(unsigned long, logging
, stats
->rs_logging
)
158 ctf_integer(__u32
, handle_count
, stats
->rs_handle_count
)
159 ctf_integer(__u32
, blocks
, stats
->rs_blocks
)
160 ctf_integer(__u32
, blocks_logged
, stats
->rs_blocks_logged
)
164 LTTNG_TRACEPOINT_EVENT(jbd2_checkpoint_stats
,
165 TP_PROTO(dev_t dev
, tid_t tid
,
166 struct transaction_chp_stats_s
*stats
),
168 TP_ARGS(dev
, tid
, stats
),
171 ctf_integer(dev_t
, dev
, dev
)
172 ctf_integer(tid_t
, tid
, tid
)
173 ctf_integer(unsigned long, chp_time
, stats
->cs_chp_time
)
174 ctf_integer(__u32
, forced_to_close
, stats
->cs_forced_to_close
)
175 ctf_integer(__u32
, written
, stats
->cs_written
)
176 ctf_integer(__u32
, dropped
, stats
->cs_dropped
)
180 LTTNG_TRACEPOINT_EVENT(jbd2_run_stats
,
181 TP_PROTO(dev_t dev
, unsigned long tid
,
182 struct transaction_run_stats_s
*stats
),
184 TP_ARGS(dev
, tid
, stats
),
187 ctf_integer(dev_t
, dev
, dev
)
188 ctf_integer(unsigned long, tid
, tid
)
189 ctf_integer(unsigned long, wait
, stats
->rs_wait
)
190 ctf_integer(unsigned long, running
, stats
->rs_running
)
191 ctf_integer(unsigned long, locked
, stats
->rs_locked
)
192 ctf_integer(unsigned long, flushing
, stats
->rs_flushing
)
193 ctf_integer(unsigned long, logging
, stats
->rs_logging
)
194 ctf_integer(__u32
, handle_count
, stats
->rs_handle_count
)
195 ctf_integer(__u32
, blocks
, stats
->rs_blocks
)
196 ctf_integer(__u32
, blocks_logged
, stats
->rs_blocks_logged
)
200 LTTNG_TRACEPOINT_EVENT(jbd2_checkpoint_stats
,
201 TP_PROTO(dev_t dev
, unsigned long tid
,
202 struct transaction_chp_stats_s
*stats
),
204 TP_ARGS(dev
, tid
, stats
),
207 ctf_integer(dev_t
, dev
, dev
)
208 ctf_integer(unsigned long, tid
, tid
)
209 ctf_integer(unsigned long, chp_time
, stats
->cs_chp_time
)
210 ctf_integer(__u32
, forced_to_close
, stats
->cs_forced_to_close
)
211 ctf_integer(__u32
, written
, stats
->cs_written
)
212 ctf_integer(__u32
, dropped
, stats
->cs_dropped
)
217 #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(3,4,0))
218 LTTNG_TRACEPOINT_EVENT(jbd2_update_log_tail
,
220 LTTNG_TRACEPOINT_EVENT(jbd2_cleanup_journal_tail
,
223 TP_PROTO(journal_t
*journal
, tid_t first_tid
,
224 unsigned long block_nr
, unsigned long freed
),
226 TP_ARGS(journal
, first_tid
, block_nr
, freed
),
229 ctf_integer(dev_t
, dev
, journal
->j_fs_dev
->bd_dev
)
230 ctf_integer(tid_t
, tail_sequence
, journal
->j_tail_sequence
)
231 ctf_integer(tid_t
, first_tid
, first_tid
)
232 ctf_integer(unsigned long, block_nr
, block_nr
)
233 ctf_integer(unsigned long, freed
, freed
)
237 #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(6,0,0))
239 #ifdef CONFIG_LTTNG_EXPERIMENTAL_BITWISE_ENUM
240 LTTNG_TRACEPOINT_ENUM(req_op
,
242 ctf_enum_value("REQ_OP_READ", REQ_OP_READ
)
243 ctf_enum_value("REQ_OP_WRITE", REQ_OP_WRITE
)
244 ctf_enum_value("REQ_OP_FLUSH", REQ_OP_FLUSH
)
245 ctf_enum_value("REQ_OP_DISCARD", REQ_OP_DISCARD
)
246 ctf_enum_value("REQ_OP_SECURE_ERASE", REQ_OP_SECURE_ERASE
)
247 ctf_enum_value("REQ_OP_WRITE_ZEROES", REQ_OP_WRITE_ZEROES
)
248 ctf_enum_value("REQ_OP_ZONE_OPEN", REQ_OP_ZONE_OPEN
)
249 ctf_enum_value("REQ_OP_ZONE_CLOSE", REQ_OP_ZONE_CLOSE
)
250 ctf_enum_value("REQ_OP_ZONE_FINISH", REQ_OP_ZONE_FINISH
)
251 ctf_enum_value("REQ_OP_ZONE_APPEND", REQ_OP_ZONE_APPEND
)
252 ctf_enum_value("REQ_OP_ZONE_RESET", REQ_OP_ZONE_RESET
)
253 ctf_enum_value("REQ_OP_ZONE_RESET_ALL", REQ_OP_ZONE_RESET_ALL
)
254 ctf_enum_value("REQ_OP_DRV_IN", REQ_OP_DRV_IN
)
255 ctf_enum_value("REQ_OP_DRV_OUT", REQ_OP_DRV_OUT
)
256 ctf_enum_value("REQ_OP_LAST", REQ_OP_LAST
)
259 #endif /* CONFIG_LTTNG_EXPERIMENTAL_BITWISE_ENUM */
261 LTTNG_TRACEPOINT_EVENT(jbd2_write_superblock
,
263 TP_PROTO(journal_t
*journal
, blk_opf_t write_flags
),
265 TP_ARGS(journal
, write_flags
),
268 ctf_integer(dev_t
, dev
, journal
->j_fs_dev
->bd_dev
)
269 #ifdef CONFIG_LTTNG_EXPERIMENTAL_BITWISE_ENUM
270 ctf_enum(req_op
, blk_opf_t
, write_flags
, write_flags
)
272 ctf_integer_hex(blk_opf_t
, write_flags
, write_flags
)
276 #elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(3,4,0))
277 LTTNG_TRACEPOINT_EVENT(jbd2_write_superblock
,
279 TP_PROTO(journal_t
*journal
, int write_op
),
281 TP_ARGS(journal
, write_op
),
284 ctf_integer(dev_t
, dev
, journal
->j_fs_dev
->bd_dev
)
285 ctf_integer(int, write_op
, write_op
)
290 #endif /* LTTNG_TRACE_JBD2_H */
292 /* This part must be outside protection */
293 #include <lttng/define_trace.h>