cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

jbd2.h (13094B)


      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
    136DECLARE_EVENT_CLASS(jbd2_handle_start_class,
    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
    164DEFINE_EVENT(jbd2_handle_start_class, jbd2_handle_start,
    165	TP_PROTO(dev_t dev, unsigned long tid, unsigned int type,
    166		 unsigned int line_no, int requested_blocks),
    167
    168	TP_ARGS(dev, tid, type, line_no, requested_blocks)
    169);
    170
    171DEFINE_EVENT(jbd2_handle_start_class, jbd2_handle_restart,
    172	TP_PROTO(dev_t dev, unsigned long tid, unsigned int type,
    173		 unsigned int line_no, int requested_blocks),
    174
    175	TP_ARGS(dev, tid, type, line_no, requested_blocks)
    176);
    177
    178TRACE_EVENT(jbd2_handle_extend,
    179	TP_PROTO(dev_t dev, unsigned long tid, unsigned int type,
    180		 unsigned int line_no, int buffer_credits,
    181		 int requested_blocks),
    182
    183	TP_ARGS(dev, tid, type, line_no, buffer_credits, requested_blocks),
    184
    185	TP_STRUCT__entry(
    186		__field(		dev_t,	dev		)
    187		__field(	unsigned long,	tid		)
    188		__field(	 unsigned int,	type		)
    189		__field(	 unsigned int,	line_no		)
    190		__field(		  int,	buffer_credits  )
    191		__field(		  int,	requested_blocks)
    192	),
    193
    194	TP_fast_assign(
    195		__entry->dev		  = dev;
    196		__entry->tid		  = tid;
    197		__entry->type		  = type;
    198		__entry->line_no	  = line_no;
    199		__entry->buffer_credits   = buffer_credits;
    200		__entry->requested_blocks = requested_blocks;
    201	),
    202
    203	TP_printk("dev %d,%d tid %lu type %u line_no %u "
    204		  "buffer_credits %d requested_blocks %d",
    205		  MAJOR(__entry->dev), MINOR(__entry->dev), __entry->tid,
    206		  __entry->type, __entry->line_no, __entry->buffer_credits,
    207		  __entry->requested_blocks)
    208);
    209
    210TRACE_EVENT(jbd2_handle_stats,
    211	TP_PROTO(dev_t dev, unsigned long tid, unsigned int type,
    212		 unsigned int line_no, int interval, int sync,
    213		 int requested_blocks, int dirtied_blocks),
    214
    215	TP_ARGS(dev, tid, type, line_no, interval, sync,
    216		requested_blocks, dirtied_blocks),
    217
    218	TP_STRUCT__entry(
    219		__field(		dev_t,	dev		)
    220		__field(	unsigned long,	tid		)
    221		__field(	 unsigned int,	type		)
    222		__field(	 unsigned int,	line_no		)
    223		__field(		  int,	interval	)
    224		__field(		  int,	sync		)
    225		__field(		  int,	requested_blocks)
    226		__field(		  int,	dirtied_blocks	)
    227	),
    228
    229	TP_fast_assign(
    230		__entry->dev		  = dev;
    231		__entry->tid		  = tid;
    232		__entry->type		  = type;
    233		__entry->line_no	  = line_no;
    234		__entry->interval	  = interval;
    235		__entry->sync		  = sync;
    236		__entry->requested_blocks = requested_blocks;
    237		__entry->dirtied_blocks	  = dirtied_blocks;
    238	),
    239
    240	TP_printk("dev %d,%d tid %lu type %u line_no %u interval %d "
    241		  "sync %d requested_blocks %d dirtied_blocks %d",
    242		  MAJOR(__entry->dev), MINOR(__entry->dev), __entry->tid,
    243		  __entry->type, __entry->line_no, __entry->interval,
    244		  __entry->sync, __entry->requested_blocks,
    245		  __entry->dirtied_blocks)
    246);
    247
    248TRACE_EVENT(jbd2_run_stats,
    249	TP_PROTO(dev_t dev, unsigned long tid,
    250		 struct transaction_run_stats_s *stats),
    251
    252	TP_ARGS(dev, tid, stats),
    253
    254	TP_STRUCT__entry(
    255		__field(		dev_t,	dev		)
    256		__field(	unsigned long,	tid		)
    257		__field(	unsigned long,	wait		)
    258		__field(	unsigned long,	request_delay	)
    259		__field(	unsigned long,	running		)
    260		__field(	unsigned long,	locked		)
    261		__field(	unsigned long,	flushing	)
    262		__field(	unsigned long,	logging		)
    263		__field(		__u32,	handle_count	)
    264		__field(		__u32,	blocks		)
    265		__field(		__u32,	blocks_logged	)
    266	),
    267
    268	TP_fast_assign(
    269		__entry->dev		= dev;
    270		__entry->tid		= tid;
    271		__entry->wait		= stats->rs_wait;
    272		__entry->request_delay	= stats->rs_request_delay;
    273		__entry->running	= stats->rs_running;
    274		__entry->locked		= stats->rs_locked;
    275		__entry->flushing	= stats->rs_flushing;
    276		__entry->logging	= stats->rs_logging;
    277		__entry->handle_count	= stats->rs_handle_count;
    278		__entry->blocks		= stats->rs_blocks;
    279		__entry->blocks_logged	= stats->rs_blocks_logged;
    280	),
    281
    282	TP_printk("dev %d,%d tid %lu wait %u request_delay %u running %u "
    283		  "locked %u flushing %u logging %u handle_count %u "
    284		  "blocks %u blocks_logged %u",
    285		  MAJOR(__entry->dev), MINOR(__entry->dev), __entry->tid,
    286		  jiffies_to_msecs(__entry->wait),
    287		  jiffies_to_msecs(__entry->request_delay),
    288		  jiffies_to_msecs(__entry->running),
    289		  jiffies_to_msecs(__entry->locked),
    290		  jiffies_to_msecs(__entry->flushing),
    291		  jiffies_to_msecs(__entry->logging),
    292		  __entry->handle_count, __entry->blocks,
    293		  __entry->blocks_logged)
    294);
    295
    296TRACE_EVENT(jbd2_checkpoint_stats,
    297	TP_PROTO(dev_t dev, unsigned long tid,
    298		 struct transaction_chp_stats_s *stats),
    299
    300	TP_ARGS(dev, tid, stats),
    301
    302	TP_STRUCT__entry(
    303		__field(		dev_t,	dev		)
    304		__field(	unsigned long,	tid		)
    305		__field(	unsigned long,	chp_time	)
    306		__field(		__u32,	forced_to_close	)
    307		__field(		__u32,	written		)
    308		__field(		__u32,	dropped		)
    309	),
    310
    311	TP_fast_assign(
    312		__entry->dev		= dev;
    313		__entry->tid		= tid;
    314		__entry->chp_time	= stats->cs_chp_time;
    315		__entry->forced_to_close= stats->cs_forced_to_close;
    316		__entry->written	= stats->cs_written;
    317		__entry->dropped	= stats->cs_dropped;
    318	),
    319
    320	TP_printk("dev %d,%d tid %lu chp_time %u forced_to_close %u "
    321		  "written %u dropped %u",
    322		  MAJOR(__entry->dev), MINOR(__entry->dev), __entry->tid,
    323		  jiffies_to_msecs(__entry->chp_time),
    324		  __entry->forced_to_close, __entry->written, __entry->dropped)
    325);
    326
    327TRACE_EVENT(jbd2_update_log_tail,
    328
    329	TP_PROTO(journal_t *journal, tid_t first_tid,
    330		 unsigned long block_nr, unsigned long freed),
    331
    332	TP_ARGS(journal, first_tid, block_nr, freed),
    333
    334	TP_STRUCT__entry(
    335		__field(	dev_t,	dev			)
    336		__field(	tid_t,	tail_sequence		)
    337		__field(	tid_t,	first_tid		)
    338		__field(unsigned long,	block_nr		)
    339		__field(unsigned long,	freed			)
    340	),
    341
    342	TP_fast_assign(
    343		__entry->dev		= journal->j_fs_dev->bd_dev;
    344		__entry->tail_sequence	= journal->j_tail_sequence;
    345		__entry->first_tid	= first_tid;
    346		__entry->block_nr	= block_nr;
    347		__entry->freed		= freed;
    348	),
    349
    350	TP_printk("dev %d,%d from %u to %u offset %lu freed %lu",
    351		  MAJOR(__entry->dev), MINOR(__entry->dev),
    352		  __entry->tail_sequence, __entry->first_tid,
    353		  __entry->block_nr, __entry->freed)
    354);
    355
    356TRACE_EVENT(jbd2_write_superblock,
    357
    358	TP_PROTO(journal_t *journal, int write_op),
    359
    360	TP_ARGS(journal, write_op),
    361
    362	TP_STRUCT__entry(
    363		__field(	dev_t,  dev			)
    364		__field(	  int,  write_op		)
    365	),
    366
    367	TP_fast_assign(
    368		__entry->dev		= journal->j_fs_dev->bd_dev;
    369		__entry->write_op	= write_op;
    370	),
    371
    372	TP_printk("dev %d,%d write_op %x", MAJOR(__entry->dev),
    373		  MINOR(__entry->dev), __entry->write_op)
    374);
    375
    376TRACE_EVENT(jbd2_lock_buffer_stall,
    377
    378	TP_PROTO(dev_t dev, unsigned long stall_ms),
    379
    380	TP_ARGS(dev, stall_ms),
    381
    382	TP_STRUCT__entry(
    383		__field(        dev_t, dev	)
    384		__field(unsigned long, stall_ms	)
    385	),
    386
    387	TP_fast_assign(
    388		__entry->dev		= dev;
    389		__entry->stall_ms	= stall_ms;
    390	),
    391
    392	TP_printk("dev %d,%d stall_ms %lu",
    393		MAJOR(__entry->dev), MINOR(__entry->dev),
    394		__entry->stall_ms)
    395);
    396
    397DECLARE_EVENT_CLASS(jbd2_journal_shrink,
    398
    399	TP_PROTO(journal_t *journal, unsigned long nr_to_scan,
    400		 unsigned long count),
    401
    402	TP_ARGS(journal, nr_to_scan, count),
    403
    404	TP_STRUCT__entry(
    405		__field(dev_t, dev)
    406		__field(unsigned long, nr_to_scan)
    407		__field(unsigned long, count)
    408	),
    409
    410	TP_fast_assign(
    411		__entry->dev		= journal->j_fs_dev->bd_dev;
    412		__entry->nr_to_scan	= nr_to_scan;
    413		__entry->count		= count;
    414	),
    415
    416	TP_printk("dev %d,%d nr_to_scan %lu count %lu",
    417		  MAJOR(__entry->dev), MINOR(__entry->dev),
    418		  __entry->nr_to_scan, __entry->count)
    419);
    420
    421DEFINE_EVENT(jbd2_journal_shrink, jbd2_shrink_count,
    422
    423	TP_PROTO(journal_t *journal, unsigned long nr_to_scan, unsigned long count),
    424
    425	TP_ARGS(journal, nr_to_scan, count)
    426);
    427
    428DEFINE_EVENT(jbd2_journal_shrink, jbd2_shrink_scan_enter,
    429
    430	TP_PROTO(journal_t *journal, unsigned long nr_to_scan, unsigned long count),
    431
    432	TP_ARGS(journal, nr_to_scan, count)
    433);
    434
    435TRACE_EVENT(jbd2_shrink_scan_exit,
    436
    437	TP_PROTO(journal_t *journal, unsigned long nr_to_scan,
    438		 unsigned long nr_shrunk, unsigned long count),
    439
    440	TP_ARGS(journal, nr_to_scan, nr_shrunk, count),
    441
    442	TP_STRUCT__entry(
    443		__field(dev_t, dev)
    444		__field(unsigned long, nr_to_scan)
    445		__field(unsigned long, nr_shrunk)
    446		__field(unsigned long, count)
    447	),
    448
    449	TP_fast_assign(
    450		__entry->dev		= journal->j_fs_dev->bd_dev;
    451		__entry->nr_to_scan	= nr_to_scan;
    452		__entry->nr_shrunk	= nr_shrunk;
    453		__entry->count		= count;
    454	),
    455
    456	TP_printk("dev %d,%d nr_to_scan %lu nr_shrunk %lu count %lu",
    457		  MAJOR(__entry->dev), MINOR(__entry->dev),
    458		  __entry->nr_to_scan, __entry->nr_shrunk,
    459		  __entry->count)
    460);
    461
    462TRACE_EVENT(jbd2_shrink_checkpoint_list,
    463
    464	TP_PROTO(journal_t *journal, tid_t first_tid, tid_t tid, tid_t last_tid,
    465		 unsigned long nr_freed, unsigned long nr_scanned,
    466		 tid_t next_tid),
    467
    468	TP_ARGS(journal, first_tid, tid, last_tid, nr_freed,
    469		nr_scanned, next_tid),
    470
    471	TP_STRUCT__entry(
    472		__field(dev_t, dev)
    473		__field(tid_t, first_tid)
    474		__field(tid_t, tid)
    475		__field(tid_t, last_tid)
    476		__field(unsigned long, nr_freed)
    477		__field(unsigned long, nr_scanned)
    478		__field(tid_t, next_tid)
    479	),
    480
    481	TP_fast_assign(
    482		__entry->dev		= journal->j_fs_dev->bd_dev;
    483		__entry->first_tid	= first_tid;
    484		__entry->tid		= tid;
    485		__entry->last_tid	= last_tid;
    486		__entry->nr_freed	= nr_freed;
    487		__entry->nr_scanned	= nr_scanned;
    488		__entry->next_tid	= next_tid;
    489	),
    490
    491	TP_printk("dev %d,%d shrink transaction %u-%u(%u) freed %lu "
    492		  "scanned %lu next transaction %u",
    493		  MAJOR(__entry->dev), MINOR(__entry->dev),
    494		  __entry->first_tid, __entry->tid, __entry->last_tid,
    495		  __entry->nr_freed, __entry->nr_scanned, __entry->next_tid)
    496);
    497
    498#endif /* _TRACE_JBD2_H */
    499
    500/* This part must be outside protection */
    501#include <trace/define_trace.h>