Linux Audio

Check our new training course

Loading...
v5.4
  1/* SPDX-License-Identifier: GPL-2.0 */
  2#undef TRACE_SYSTEM
  3#define TRACE_SYSTEM jbd2
  4
  5#if !defined(_TRACE_JBD2_H) || defined(TRACE_HEADER_MULTI_READ)
  6#define _TRACE_JBD2_H
  7
  8#include <linux/jbd2.h>
  9#include <linux/tracepoint.h>
 10
 11struct transaction_chp_stats_s;
 12struct transaction_run_stats_s;
 13
 14TRACE_EVENT(jbd2_checkpoint,
 15
 16	TP_PROTO(journal_t *journal, int result),
 17
 18	TP_ARGS(journal, result),
 19
 20	TP_STRUCT__entry(
 21		__field(	dev_t,	dev			)
 22		__field(	int,	result			)
 23	),
 24
 25	TP_fast_assign(
 26		__entry->dev		= journal->j_fs_dev->bd_dev;
 27		__entry->result		= result;
 28	),
 29
 30	TP_printk("dev %d,%d result %d",
 31		  MAJOR(__entry->dev), MINOR(__entry->dev), __entry->result)
 32);
 33
 34DECLARE_EVENT_CLASS(jbd2_commit,
 35
 36	TP_PROTO(journal_t *journal, transaction_t *commit_transaction),
 37
 38	TP_ARGS(journal, commit_transaction),
 39
 40	TP_STRUCT__entry(
 41		__field(	dev_t,	dev			)
 42		__field(	char,	sync_commit		  )
 43		__field(	int,	transaction		  )
 44	),
 45
 46	TP_fast_assign(
 47		__entry->dev		= journal->j_fs_dev->bd_dev;
 48		__entry->sync_commit = commit_transaction->t_synchronous_commit;
 49		__entry->transaction	= commit_transaction->t_tid;
 50	),
 51
 52	TP_printk("dev %d,%d transaction %d sync %d",
 53		  MAJOR(__entry->dev), MINOR(__entry->dev),
 54		  __entry->transaction, __entry->sync_commit)
 55);
 56
 57DEFINE_EVENT(jbd2_commit, jbd2_start_commit,
 58
 59	TP_PROTO(journal_t *journal, transaction_t *commit_transaction),
 60
 61	TP_ARGS(journal, commit_transaction)
 62);
 63
 64DEFINE_EVENT(jbd2_commit, jbd2_commit_locking,
 65
 66	TP_PROTO(journal_t *journal, transaction_t *commit_transaction),
 67
 68	TP_ARGS(journal, commit_transaction)
 69);
 70
 71DEFINE_EVENT(jbd2_commit, jbd2_commit_flushing,
 72
 73	TP_PROTO(journal_t *journal, transaction_t *commit_transaction),
 74
 75	TP_ARGS(journal, commit_transaction)
 76);
 77
 78DEFINE_EVENT(jbd2_commit, jbd2_commit_logging,
 79
 80	TP_PROTO(journal_t *journal, transaction_t *commit_transaction),
 81
 82	TP_ARGS(journal, commit_transaction)
 83);
 84
 85DEFINE_EVENT(jbd2_commit, jbd2_drop_transaction,
 86
 87	TP_PROTO(journal_t *journal, transaction_t *commit_transaction),
 88
 89	TP_ARGS(journal, commit_transaction)
 90);
 91
 92TRACE_EVENT(jbd2_end_commit,
 93	TP_PROTO(journal_t *journal, transaction_t *commit_transaction),
 94
 95	TP_ARGS(journal, commit_transaction),
 96
 97	TP_STRUCT__entry(
 98		__field(	dev_t,	dev			)
 99		__field(	char,	sync_commit		  )
100		__field(	int,	transaction		  )
101		__field(	int,	head		  	  )
102	),
103
104	TP_fast_assign(
105		__entry->dev		= journal->j_fs_dev->bd_dev;
106		__entry->sync_commit = commit_transaction->t_synchronous_commit;
107		__entry->transaction	= commit_transaction->t_tid;
108		__entry->head		= journal->j_tail_sequence;
109	),
110
111	TP_printk("dev %d,%d transaction %d sync %d head %d",
112		  MAJOR(__entry->dev), MINOR(__entry->dev),
113		  __entry->transaction, __entry->sync_commit, __entry->head)
114);
115
116TRACE_EVENT(jbd2_submit_inode_data,
117	TP_PROTO(struct inode *inode),
118
119	TP_ARGS(inode),
120
121	TP_STRUCT__entry(
122		__field(	dev_t,	dev			)
123		__field(	ino_t,	ino			)
124	),
125
126	TP_fast_assign(
127		__entry->dev	= inode->i_sb->s_dev;
128		__entry->ino	= inode->i_ino;
129	),
130
131	TP_printk("dev %d,%d ino %lu",
132		  MAJOR(__entry->dev), MINOR(__entry->dev),
133		  (unsigned long) __entry->ino)
134);
135
136TRACE_EVENT(jbd2_handle_start,
137	TP_PROTO(dev_t dev, unsigned long tid, unsigned int type,
138		 unsigned int line_no, int requested_blocks),
139
140	TP_ARGS(dev, tid, type, line_no, requested_blocks),
141
142	TP_STRUCT__entry(
143		__field(		dev_t,	dev		)
144		__field(	unsigned long,	tid		)
145		__field(	 unsigned int,	type		)
146		__field(	 unsigned int,	line_no		)
147		__field(		  int,	requested_blocks)
148	),
149
150	TP_fast_assign(
151		__entry->dev		  = dev;
152		__entry->tid		  = tid;
153		__entry->type		  = type;
154		__entry->line_no	  = line_no;
155		__entry->requested_blocks = requested_blocks;
156	),
157
158	TP_printk("dev %d,%d tid %lu type %u line_no %u "
159		  "requested_blocks %d",
160		  MAJOR(__entry->dev), MINOR(__entry->dev), __entry->tid,
161		  __entry->type, __entry->line_no, __entry->requested_blocks)
162);
163
164TRACE_EVENT(jbd2_handle_extend,
165	TP_PROTO(dev_t dev, unsigned long tid, unsigned int type,
166		 unsigned int line_no, int buffer_credits,
167		 int requested_blocks),
168
169	TP_ARGS(dev, tid, type, line_no, buffer_credits, requested_blocks),
170
171	TP_STRUCT__entry(
172		__field(		dev_t,	dev		)
173		__field(	unsigned long,	tid		)
174		__field(	 unsigned int,	type		)
175		__field(	 unsigned int,	line_no		)
176		__field(		  int,	buffer_credits  )
177		__field(		  int,	requested_blocks)
178	),
179
180	TP_fast_assign(
181		__entry->dev		  = dev;
182		__entry->tid		  = tid;
183		__entry->type		  = type;
184		__entry->line_no	  = line_no;
185		__entry->buffer_credits   = buffer_credits;
186		__entry->requested_blocks = requested_blocks;
187	),
188
189	TP_printk("dev %d,%d tid %lu type %u line_no %u "
190		  "buffer_credits %d requested_blocks %d",
191		  MAJOR(__entry->dev), MINOR(__entry->dev), __entry->tid,
192		  __entry->type, __entry->line_no, __entry->buffer_credits,
193		  __entry->requested_blocks)
194);
195
196TRACE_EVENT(jbd2_handle_stats,
197	TP_PROTO(dev_t dev, unsigned long tid, unsigned int type,
198		 unsigned int line_no, int interval, int sync,
199		 int requested_blocks, int dirtied_blocks),
200
201	TP_ARGS(dev, tid, type, line_no, interval, sync,
202		requested_blocks, dirtied_blocks),
203
204	TP_STRUCT__entry(
205		__field(		dev_t,	dev		)
206		__field(	unsigned long,	tid		)
207		__field(	 unsigned int,	type		)
208		__field(	 unsigned int,	line_no		)
209		__field(		  int,	interval	)
210		__field(		  int,	sync		)
211		__field(		  int,	requested_blocks)
212		__field(		  int,	dirtied_blocks	)
213	),
214
215	TP_fast_assign(
216		__entry->dev		  = dev;
217		__entry->tid		  = tid;
218		__entry->type		  = type;
219		__entry->line_no	  = line_no;
220		__entry->interval	  = interval;
221		__entry->sync		  = sync;
222		__entry->requested_blocks = requested_blocks;
223		__entry->dirtied_blocks	  = dirtied_blocks;
224	),
225
226	TP_printk("dev %d,%d tid %lu type %u line_no %u interval %d "
227		  "sync %d requested_blocks %d dirtied_blocks %d",
228		  MAJOR(__entry->dev), MINOR(__entry->dev), __entry->tid,
229		  __entry->type, __entry->line_no, __entry->interval,
230		  __entry->sync, __entry->requested_blocks,
231		  __entry->dirtied_blocks)
232);
233
234TRACE_EVENT(jbd2_run_stats,
235	TP_PROTO(dev_t dev, unsigned long tid,
236		 struct transaction_run_stats_s *stats),
237
238	TP_ARGS(dev, tid, stats),
239
240	TP_STRUCT__entry(
241		__field(		dev_t,	dev		)
242		__field(	unsigned long,	tid		)
243		__field(	unsigned long,	wait		)
244		__field(	unsigned long,	request_delay	)
245		__field(	unsigned long,	running		)
246		__field(	unsigned long,	locked		)
247		__field(	unsigned long,	flushing	)
248		__field(	unsigned long,	logging		)
249		__field(		__u32,	handle_count	)
250		__field(		__u32,	blocks		)
251		__field(		__u32,	blocks_logged	)
252	),
253
254	TP_fast_assign(
255		__entry->dev		= dev;
256		__entry->tid		= tid;
257		__entry->wait		= stats->rs_wait;
258		__entry->request_delay	= stats->rs_request_delay;
259		__entry->running	= stats->rs_running;
260		__entry->locked		= stats->rs_locked;
261		__entry->flushing	= stats->rs_flushing;
262		__entry->logging	= stats->rs_logging;
263		__entry->handle_count	= stats->rs_handle_count;
264		__entry->blocks		= stats->rs_blocks;
265		__entry->blocks_logged	= stats->rs_blocks_logged;
266	),
267
268	TP_printk("dev %d,%d tid %lu wait %u request_delay %u running %u "
269		  "locked %u flushing %u logging %u handle_count %u "
270		  "blocks %u blocks_logged %u",
271		  MAJOR(__entry->dev), MINOR(__entry->dev), __entry->tid,
272		  jiffies_to_msecs(__entry->wait),
273		  jiffies_to_msecs(__entry->request_delay),
274		  jiffies_to_msecs(__entry->running),
275		  jiffies_to_msecs(__entry->locked),
276		  jiffies_to_msecs(__entry->flushing),
277		  jiffies_to_msecs(__entry->logging),
278		  __entry->handle_count, __entry->blocks,
279		  __entry->blocks_logged)
280);
281
282TRACE_EVENT(jbd2_checkpoint_stats,
283	TP_PROTO(dev_t dev, unsigned long tid,
284		 struct transaction_chp_stats_s *stats),
285
286	TP_ARGS(dev, tid, stats),
287
288	TP_STRUCT__entry(
289		__field(		dev_t,	dev		)
290		__field(	unsigned long,	tid		)
291		__field(	unsigned long,	chp_time	)
292		__field(		__u32,	forced_to_close	)
293		__field(		__u32,	written		)
294		__field(		__u32,	dropped		)
295	),
296
297	TP_fast_assign(
298		__entry->dev		= dev;
299		__entry->tid		= tid;
300		__entry->chp_time	= stats->cs_chp_time;
301		__entry->forced_to_close= stats->cs_forced_to_close;
302		__entry->written	= stats->cs_written;
303		__entry->dropped	= stats->cs_dropped;
304	),
305
306	TP_printk("dev %d,%d tid %lu chp_time %u forced_to_close %u "
307		  "written %u dropped %u",
308		  MAJOR(__entry->dev), MINOR(__entry->dev), __entry->tid,
309		  jiffies_to_msecs(__entry->chp_time),
310		  __entry->forced_to_close, __entry->written, __entry->dropped)
311);
312
313TRACE_EVENT(jbd2_update_log_tail,
314
315	TP_PROTO(journal_t *journal, tid_t first_tid,
316		 unsigned long block_nr, unsigned long freed),
317
318	TP_ARGS(journal, first_tid, block_nr, freed),
319
320	TP_STRUCT__entry(
321		__field(	dev_t,	dev			)
322		__field(	tid_t,	tail_sequence		)
323		__field(	tid_t,	first_tid		)
324		__field(unsigned long,	block_nr		)
325		__field(unsigned long,	freed			)
326	),
327
328	TP_fast_assign(
329		__entry->dev		= journal->j_fs_dev->bd_dev;
330		__entry->tail_sequence	= journal->j_tail_sequence;
331		__entry->first_tid	= first_tid;
332		__entry->block_nr	= block_nr;
333		__entry->freed		= freed;
334	),
335
336	TP_printk("dev %d,%d from %u to %u offset %lu freed %lu",
337		  MAJOR(__entry->dev), MINOR(__entry->dev),
338		  __entry->tail_sequence, __entry->first_tid,
339		  __entry->block_nr, __entry->freed)
340);
341
342TRACE_EVENT(jbd2_write_superblock,
343
344	TP_PROTO(journal_t *journal, int write_op),
345
346	TP_ARGS(journal, write_op),
347
348	TP_STRUCT__entry(
349		__field(	dev_t,  dev			)
350		__field(	  int,  write_op		)
351	),
352
353	TP_fast_assign(
354		__entry->dev		= journal->j_fs_dev->bd_dev;
355		__entry->write_op	= write_op;
356	),
357
358	TP_printk("dev %d,%d write_op %x", MAJOR(__entry->dev),
359		  MINOR(__entry->dev), __entry->write_op)
360);
361
362TRACE_EVENT(jbd2_lock_buffer_stall,
363
364	TP_PROTO(dev_t dev, unsigned long stall_ms),
365
366	TP_ARGS(dev, stall_ms),
367
368	TP_STRUCT__entry(
369		__field(        dev_t, dev	)
370		__field(unsigned long, stall_ms	)
371	),
372
373	TP_fast_assign(
374		__entry->dev		= dev;
375		__entry->stall_ms	= stall_ms;
376	),
377
378	TP_printk("dev %d,%d stall_ms %lu",
379		MAJOR(__entry->dev), MINOR(__entry->dev),
380		__entry->stall_ms)
381);
382
383#endif /* _TRACE_JBD2_H */
384
385/* This part must be outside protection */
386#include <trace/define_trace.h>
v3.5.6
 
  1#undef TRACE_SYSTEM
  2#define TRACE_SYSTEM jbd2
  3
  4#if !defined(_TRACE_JBD2_H) || defined(TRACE_HEADER_MULTI_READ)
  5#define _TRACE_JBD2_H
  6
  7#include <linux/jbd2.h>
  8#include <linux/tracepoint.h>
  9
 10struct transaction_chp_stats_s;
 11struct transaction_run_stats_s;
 12
 13TRACE_EVENT(jbd2_checkpoint,
 14
 15	TP_PROTO(journal_t *journal, int result),
 16
 17	TP_ARGS(journal, result),
 18
 19	TP_STRUCT__entry(
 20		__field(	dev_t,	dev			)
 21		__field(	int,	result			)
 22	),
 23
 24	TP_fast_assign(
 25		__entry->dev		= journal->j_fs_dev->bd_dev;
 26		__entry->result		= result;
 27	),
 28
 29	TP_printk("dev %d,%d result %d",
 30		  MAJOR(__entry->dev), MINOR(__entry->dev), __entry->result)
 31);
 32
 33DECLARE_EVENT_CLASS(jbd2_commit,
 34
 35	TP_PROTO(journal_t *journal, transaction_t *commit_transaction),
 36
 37	TP_ARGS(journal, commit_transaction),
 38
 39	TP_STRUCT__entry(
 40		__field(	dev_t,	dev			)
 41		__field(	char,	sync_commit		  )
 42		__field(	int,	transaction		  )
 43	),
 44
 45	TP_fast_assign(
 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;
 49	),
 50
 51	TP_printk("dev %d,%d transaction %d sync %d",
 52		  MAJOR(__entry->dev), MINOR(__entry->dev),
 53		  __entry->transaction, __entry->sync_commit)
 54);
 55
 56DEFINE_EVENT(jbd2_commit, jbd2_start_commit,
 57
 58	TP_PROTO(journal_t *journal, transaction_t *commit_transaction),
 59
 60	TP_ARGS(journal, commit_transaction)
 61);
 62
 63DEFINE_EVENT(jbd2_commit, jbd2_commit_locking,
 64
 65	TP_PROTO(journal_t *journal, transaction_t *commit_transaction),
 66
 67	TP_ARGS(journal, commit_transaction)
 68);
 69
 70DEFINE_EVENT(jbd2_commit, jbd2_commit_flushing,
 71
 72	TP_PROTO(journal_t *journal, transaction_t *commit_transaction),
 73
 74	TP_ARGS(journal, commit_transaction)
 75);
 76
 77DEFINE_EVENT(jbd2_commit, jbd2_commit_logging,
 78
 79	TP_PROTO(journal_t *journal, transaction_t *commit_transaction),
 80
 81	TP_ARGS(journal, commit_transaction)
 82);
 83
 84DEFINE_EVENT(jbd2_commit, jbd2_drop_transaction,
 85
 86	TP_PROTO(journal_t *journal, transaction_t *commit_transaction),
 87
 88	TP_ARGS(journal, commit_transaction)
 89);
 90
 91TRACE_EVENT(jbd2_end_commit,
 92	TP_PROTO(journal_t *journal, transaction_t *commit_transaction),
 93
 94	TP_ARGS(journal, commit_transaction),
 95
 96	TP_STRUCT__entry(
 97		__field(	dev_t,	dev			)
 98		__field(	char,	sync_commit		  )
 99		__field(	int,	transaction		  )
100		__field(	int,	head		  	  )
101	),
102
103	TP_fast_assign(
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;
108	),
109
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)
113);
114
115TRACE_EVENT(jbd2_submit_inode_data,
116	TP_PROTO(struct inode *inode),
117
118	TP_ARGS(inode),
119
120	TP_STRUCT__entry(
121		__field(	dev_t,	dev			)
122		__field(	ino_t,	ino			)
123	),
124
125	TP_fast_assign(
126		__entry->dev	= inode->i_sb->s_dev;
127		__entry->ino	= inode->i_ino;
128	),
129
130	TP_printk("dev %d,%d ino %lu",
131		  MAJOR(__entry->dev), MINOR(__entry->dev),
132		  (unsigned long) __entry->ino)
133);
134
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
135TRACE_EVENT(jbd2_run_stats,
136	TP_PROTO(dev_t dev, unsigned long tid,
137		 struct transaction_run_stats_s *stats),
138
139	TP_ARGS(dev, tid, stats),
140
141	TP_STRUCT__entry(
142		__field(		dev_t,	dev		)
143		__field(	unsigned long,	tid		)
144		__field(	unsigned long,	wait		)
 
145		__field(	unsigned long,	running		)
146		__field(	unsigned long,	locked		)
147		__field(	unsigned long,	flushing	)
148		__field(	unsigned long,	logging		)
149		__field(		__u32,	handle_count	)
150		__field(		__u32,	blocks		)
151		__field(		__u32,	blocks_logged	)
152	),
153
154	TP_fast_assign(
155		__entry->dev		= dev;
156		__entry->tid		= tid;
157		__entry->wait		= stats->rs_wait;
 
158		__entry->running	= stats->rs_running;
159		__entry->locked		= stats->rs_locked;
160		__entry->flushing	= stats->rs_flushing;
161		__entry->logging	= stats->rs_logging;
162		__entry->handle_count	= stats->rs_handle_count;
163		__entry->blocks		= stats->rs_blocks;
164		__entry->blocks_logged	= stats->rs_blocks_logged;
165	),
166
167	TP_printk("dev %d,%d tid %lu wait %u running %u locked %u flushing %u "
168		  "logging %u handle_count %u blocks %u blocks_logged %u",
 
169		  MAJOR(__entry->dev), MINOR(__entry->dev), __entry->tid,
170		  jiffies_to_msecs(__entry->wait),
 
171		  jiffies_to_msecs(__entry->running),
172		  jiffies_to_msecs(__entry->locked),
173		  jiffies_to_msecs(__entry->flushing),
174		  jiffies_to_msecs(__entry->logging),
175		  __entry->handle_count, __entry->blocks,
176		  __entry->blocks_logged)
177);
178
179TRACE_EVENT(jbd2_checkpoint_stats,
180	TP_PROTO(dev_t dev, unsigned long tid,
181		 struct transaction_chp_stats_s *stats),
182
183	TP_ARGS(dev, tid, stats),
184
185	TP_STRUCT__entry(
186		__field(		dev_t,	dev		)
187		__field(	unsigned long,	tid		)
188		__field(	unsigned long,	chp_time	)
189		__field(		__u32,	forced_to_close	)
190		__field(		__u32,	written		)
191		__field(		__u32,	dropped		)
192	),
193
194	TP_fast_assign(
195		__entry->dev		= dev;
196		__entry->tid		= tid;
197		__entry->chp_time	= stats->cs_chp_time;
198		__entry->forced_to_close= stats->cs_forced_to_close;
199		__entry->written	= stats->cs_written;
200		__entry->dropped	= stats->cs_dropped;
201	),
202
203	TP_printk("dev %d,%d tid %lu chp_time %u forced_to_close %u "
204		  "written %u dropped %u",
205		  MAJOR(__entry->dev), MINOR(__entry->dev), __entry->tid,
206		  jiffies_to_msecs(__entry->chp_time),
207		  __entry->forced_to_close, __entry->written, __entry->dropped)
208);
209
210TRACE_EVENT(jbd2_update_log_tail,
211
212	TP_PROTO(journal_t *journal, tid_t first_tid,
213		 unsigned long block_nr, unsigned long freed),
214
215	TP_ARGS(journal, first_tid, block_nr, freed),
216
217	TP_STRUCT__entry(
218		__field(	dev_t,	dev			)
219		__field(	tid_t,	tail_sequence		)
220		__field(	tid_t,	first_tid		)
221		__field(unsigned long,	block_nr		)
222		__field(unsigned long,	freed			)
223	),
224
225	TP_fast_assign(
226		__entry->dev		= journal->j_fs_dev->bd_dev;
227		__entry->tail_sequence	= journal->j_tail_sequence;
228		__entry->first_tid	= first_tid;
229		__entry->block_nr	= block_nr;
230		__entry->freed		= freed;
231	),
232
233	TP_printk("dev %d,%d from %u to %u offset %lu freed %lu",
234		  MAJOR(__entry->dev), MINOR(__entry->dev),
235		  __entry->tail_sequence, __entry->first_tid,
236		  __entry->block_nr, __entry->freed)
237);
238
239TRACE_EVENT(jbd2_write_superblock,
240
241	TP_PROTO(journal_t *journal, int write_op),
242
243	TP_ARGS(journal, write_op),
244
245	TP_STRUCT__entry(
246		__field(	dev_t,  dev			)
247		__field(	  int,  write_op		)
248	),
249
250	TP_fast_assign(
251		__entry->dev		= journal->j_fs_dev->bd_dev;
252		__entry->write_op	= write_op;
253	),
254
255	TP_printk("dev %d,%d write_op %x", MAJOR(__entry->dev),
256		  MINOR(__entry->dev), __entry->write_op)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
257);
258
259#endif /* _TRACE_JBD2_H */
260
261/* This part must be outside protection */
262#include <trace/define_trace.h>