1*b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */ 2d0b6e04aSLi Zefan #undef TRACE_SYSTEM 3d0b6e04aSLi Zefan #define TRACE_SYSTEM jbd2 4d0b6e04aSLi Zefan 5879c5e6bSTheodore Ts'o #if !defined(_TRACE_JBD2_H) || defined(TRACE_HEADER_MULTI_READ) 6879c5e6bSTheodore Ts'o #define _TRACE_JBD2_H 7879c5e6bSTheodore Ts'o 8879c5e6bSTheodore Ts'o #include <linux/jbd2.h> 9879c5e6bSTheodore Ts'o #include <linux/tracepoint.h> 10879c5e6bSTheodore Ts'o 11bf699327STheodore Ts'o struct transaction_chp_stats_s; 12bf699327STheodore Ts'o struct transaction_run_stats_s; 13bf699327STheodore Ts'o 14879c5e6bSTheodore Ts'o TRACE_EVENT(jbd2_checkpoint, 15879c5e6bSTheodore Ts'o 16879c5e6bSTheodore Ts'o TP_PROTO(journal_t *journal, int result), 17879c5e6bSTheodore Ts'o 18879c5e6bSTheodore Ts'o TP_ARGS(journal, result), 19879c5e6bSTheodore Ts'o 20879c5e6bSTheodore Ts'o TP_STRUCT__entry( 210562e0baSJiaying Zhang __field( dev_t, dev ) 22879c5e6bSTheodore Ts'o __field( int, result ) 23879c5e6bSTheodore Ts'o ), 24879c5e6bSTheodore Ts'o 25879c5e6bSTheodore Ts'o TP_fast_assign( 260562e0baSJiaying Zhang __entry->dev = journal->j_fs_dev->bd_dev; 27879c5e6bSTheodore Ts'o __entry->result = result; 28879c5e6bSTheodore Ts'o ), 29879c5e6bSTheodore Ts'o 304862fd60STheodore Ts'o TP_printk("dev %d,%d result %d", 314862fd60STheodore Ts'o MAJOR(__entry->dev), MINOR(__entry->dev), __entry->result) 32879c5e6bSTheodore Ts'o ); 33879c5e6bSTheodore Ts'o 34071688f3SLi Zefan DECLARE_EVENT_CLASS(jbd2_commit, 35879c5e6bSTheodore Ts'o 36879c5e6bSTheodore Ts'o TP_PROTO(journal_t *journal, transaction_t *commit_transaction), 37879c5e6bSTheodore Ts'o 38879c5e6bSTheodore Ts'o TP_ARGS(journal, commit_transaction), 39879c5e6bSTheodore Ts'o 40879c5e6bSTheodore Ts'o TP_STRUCT__entry( 410562e0baSJiaying Zhang __field( dev_t, dev ) 42879c5e6bSTheodore Ts'o __field( char, sync_commit ) 43879c5e6bSTheodore Ts'o __field( int, transaction ) 44879c5e6bSTheodore Ts'o ), 45879c5e6bSTheodore Ts'o 46879c5e6bSTheodore Ts'o TP_fast_assign( 470562e0baSJiaying Zhang __entry->dev = journal->j_fs_dev->bd_dev; 48879c5e6bSTheodore Ts'o __entry->sync_commit = commit_transaction->t_synchronous_commit; 49879c5e6bSTheodore Ts'o __entry->transaction = commit_transaction->t_tid; 50879c5e6bSTheodore Ts'o ), 51879c5e6bSTheodore Ts'o 524862fd60STheodore Ts'o TP_printk("dev %d,%d transaction %d sync %d", 534862fd60STheodore Ts'o MAJOR(__entry->dev), MINOR(__entry->dev), 544862fd60STheodore Ts'o __entry->transaction, __entry->sync_commit) 55879c5e6bSTheodore Ts'o ); 56879c5e6bSTheodore Ts'o 57071688f3SLi Zefan DEFINE_EVENT(jbd2_commit, jbd2_start_commit, 58879c5e6bSTheodore Ts'o 59879c5e6bSTheodore Ts'o TP_PROTO(journal_t *journal, transaction_t *commit_transaction), 60879c5e6bSTheodore Ts'o 61071688f3SLi Zefan TP_ARGS(journal, commit_transaction) 62879c5e6bSTheodore Ts'o ); 63879c5e6bSTheodore Ts'o 64071688f3SLi Zefan DEFINE_EVENT(jbd2_commit, jbd2_commit_locking, 65879c5e6bSTheodore Ts'o 66879c5e6bSTheodore Ts'o TP_PROTO(journal_t *journal, transaction_t *commit_transaction), 67879c5e6bSTheodore Ts'o 68071688f3SLi Zefan TP_ARGS(journal, commit_transaction) 69879c5e6bSTheodore Ts'o ); 70879c5e6bSTheodore Ts'o 71071688f3SLi Zefan DEFINE_EVENT(jbd2_commit, jbd2_commit_flushing, 72879c5e6bSTheodore Ts'o 73879c5e6bSTheodore Ts'o TP_PROTO(journal_t *journal, transaction_t *commit_transaction), 74879c5e6bSTheodore Ts'o 75071688f3SLi Zefan TP_ARGS(journal, commit_transaction) 76071688f3SLi Zefan ); 77879c5e6bSTheodore Ts'o 78071688f3SLi Zefan DEFINE_EVENT(jbd2_commit, jbd2_commit_logging, 79879c5e6bSTheodore Ts'o 80071688f3SLi Zefan TP_PROTO(journal_t *journal, transaction_t *commit_transaction), 81879c5e6bSTheodore Ts'o 82071688f3SLi Zefan TP_ARGS(journal, commit_transaction) 83879c5e6bSTheodore Ts'o ); 84879c5e6bSTheodore Ts'o 852201c590SSeiji Aguchi DEFINE_EVENT(jbd2_commit, jbd2_drop_transaction, 862201c590SSeiji Aguchi 872201c590SSeiji Aguchi TP_PROTO(journal_t *journal, transaction_t *commit_transaction), 882201c590SSeiji Aguchi 892201c590SSeiji Aguchi TP_ARGS(journal, commit_transaction) 902201c590SSeiji Aguchi ); 912201c590SSeiji Aguchi 92879c5e6bSTheodore Ts'o TRACE_EVENT(jbd2_end_commit, 93879c5e6bSTheodore Ts'o TP_PROTO(journal_t *journal, transaction_t *commit_transaction), 94879c5e6bSTheodore Ts'o 95879c5e6bSTheodore Ts'o TP_ARGS(journal, commit_transaction), 96879c5e6bSTheodore Ts'o 97879c5e6bSTheodore Ts'o TP_STRUCT__entry( 980562e0baSJiaying Zhang __field( dev_t, dev ) 99879c5e6bSTheodore Ts'o __field( char, sync_commit ) 100879c5e6bSTheodore Ts'o __field( int, transaction ) 101879c5e6bSTheodore Ts'o __field( int, head ) 102879c5e6bSTheodore Ts'o ), 103879c5e6bSTheodore Ts'o 104879c5e6bSTheodore Ts'o TP_fast_assign( 1050562e0baSJiaying Zhang __entry->dev = journal->j_fs_dev->bd_dev; 106879c5e6bSTheodore Ts'o __entry->sync_commit = commit_transaction->t_synchronous_commit; 107879c5e6bSTheodore Ts'o __entry->transaction = commit_transaction->t_tid; 108879c5e6bSTheodore Ts'o __entry->head = journal->j_tail_sequence; 109879c5e6bSTheodore Ts'o ), 110879c5e6bSTheodore Ts'o 1114862fd60STheodore Ts'o TP_printk("dev %d,%d transaction %d sync %d head %d", 1124862fd60STheodore Ts'o MAJOR(__entry->dev), MINOR(__entry->dev), 1134862fd60STheodore Ts'o __entry->transaction, __entry->sync_commit, __entry->head) 114879c5e6bSTheodore Ts'o ); 115879c5e6bSTheodore Ts'o 116879c5e6bSTheodore Ts'o TRACE_EVENT(jbd2_submit_inode_data, 117879c5e6bSTheodore Ts'o TP_PROTO(struct inode *inode), 118879c5e6bSTheodore Ts'o 119879c5e6bSTheodore Ts'o TP_ARGS(inode), 120879c5e6bSTheodore Ts'o 121879c5e6bSTheodore Ts'o TP_STRUCT__entry( 1220562e0baSJiaying Zhang __field( dev_t, dev ) 123879c5e6bSTheodore Ts'o __field( ino_t, ino ) 124879c5e6bSTheodore Ts'o ), 125879c5e6bSTheodore Ts'o 126879c5e6bSTheodore Ts'o TP_fast_assign( 1270562e0baSJiaying Zhang __entry->dev = inode->i_sb->s_dev; 128879c5e6bSTheodore Ts'o __entry->ino = inode->i_ino; 129879c5e6bSTheodore Ts'o ), 130879c5e6bSTheodore Ts'o 1314862fd60STheodore Ts'o TP_printk("dev %d,%d ino %lu", 1324862fd60STheodore Ts'o MAJOR(__entry->dev), MINOR(__entry->dev), 1334862fd60STheodore Ts'o (unsigned long) __entry->ino) 134879c5e6bSTheodore Ts'o ); 135879c5e6bSTheodore Ts'o 136343d9c28STheodore Ts'o TRACE_EVENT(jbd2_handle_start, 137343d9c28STheodore Ts'o TP_PROTO(dev_t dev, unsigned long tid, unsigned int type, 138343d9c28STheodore Ts'o unsigned int line_no, int requested_blocks), 139343d9c28STheodore Ts'o 140343d9c28STheodore Ts'o TP_ARGS(dev, tid, type, line_no, requested_blocks), 141343d9c28STheodore Ts'o 142343d9c28STheodore Ts'o TP_STRUCT__entry( 143343d9c28STheodore Ts'o __field( dev_t, dev ) 144343d9c28STheodore Ts'o __field( unsigned long, tid ) 145343d9c28STheodore Ts'o __field( unsigned int, type ) 146343d9c28STheodore Ts'o __field( unsigned int, line_no ) 147343d9c28STheodore Ts'o __field( int, requested_blocks) 148343d9c28STheodore Ts'o ), 149343d9c28STheodore Ts'o 150343d9c28STheodore Ts'o TP_fast_assign( 151343d9c28STheodore Ts'o __entry->dev = dev; 152343d9c28STheodore Ts'o __entry->tid = tid; 153343d9c28STheodore Ts'o __entry->type = type; 154343d9c28STheodore Ts'o __entry->line_no = line_no; 155343d9c28STheodore Ts'o __entry->requested_blocks = requested_blocks; 156343d9c28STheodore Ts'o ), 157343d9c28STheodore Ts'o 158343d9c28STheodore Ts'o TP_printk("dev %d,%d tid %lu type %u line_no %u " 159343d9c28STheodore Ts'o "requested_blocks %d", 160343d9c28STheodore Ts'o MAJOR(__entry->dev), MINOR(__entry->dev), __entry->tid, 161343d9c28STheodore Ts'o __entry->type, __entry->line_no, __entry->requested_blocks) 162343d9c28STheodore Ts'o ); 163343d9c28STheodore Ts'o 164343d9c28STheodore Ts'o TRACE_EVENT(jbd2_handle_extend, 165343d9c28STheodore Ts'o TP_PROTO(dev_t dev, unsigned long tid, unsigned int type, 166343d9c28STheodore Ts'o unsigned int line_no, int buffer_credits, 167343d9c28STheodore Ts'o int requested_blocks), 168343d9c28STheodore Ts'o 169343d9c28STheodore Ts'o TP_ARGS(dev, tid, type, line_no, buffer_credits, requested_blocks), 170343d9c28STheodore Ts'o 171343d9c28STheodore Ts'o TP_STRUCT__entry( 172343d9c28STheodore Ts'o __field( dev_t, dev ) 173343d9c28STheodore Ts'o __field( unsigned long, tid ) 174343d9c28STheodore Ts'o __field( unsigned int, type ) 175343d9c28STheodore Ts'o __field( unsigned int, line_no ) 176343d9c28STheodore Ts'o __field( int, buffer_credits ) 177343d9c28STheodore Ts'o __field( int, requested_blocks) 178343d9c28STheodore Ts'o ), 179343d9c28STheodore Ts'o 180343d9c28STheodore Ts'o TP_fast_assign( 181343d9c28STheodore Ts'o __entry->dev = dev; 182343d9c28STheodore Ts'o __entry->tid = tid; 183343d9c28STheodore Ts'o __entry->type = type; 184343d9c28STheodore Ts'o __entry->line_no = line_no; 185343d9c28STheodore Ts'o __entry->buffer_credits = buffer_credits; 186343d9c28STheodore Ts'o __entry->requested_blocks = requested_blocks; 187343d9c28STheodore Ts'o ), 188343d9c28STheodore Ts'o 189343d9c28STheodore Ts'o TP_printk("dev %d,%d tid %lu type %u line_no %u " 190343d9c28STheodore Ts'o "buffer_credits %d requested_blocks %d", 191343d9c28STheodore Ts'o MAJOR(__entry->dev), MINOR(__entry->dev), __entry->tid, 192343d9c28STheodore Ts'o __entry->type, __entry->line_no, __entry->buffer_credits, 193343d9c28STheodore Ts'o __entry->requested_blocks) 194343d9c28STheodore Ts'o ); 195343d9c28STheodore Ts'o 196343d9c28STheodore Ts'o TRACE_EVENT(jbd2_handle_stats, 197343d9c28STheodore Ts'o TP_PROTO(dev_t dev, unsigned long tid, unsigned int type, 198343d9c28STheodore Ts'o unsigned int line_no, int interval, int sync, 199343d9c28STheodore Ts'o int requested_blocks, int dirtied_blocks), 200343d9c28STheodore Ts'o 201343d9c28STheodore Ts'o TP_ARGS(dev, tid, type, line_no, interval, sync, 202343d9c28STheodore Ts'o requested_blocks, dirtied_blocks), 203343d9c28STheodore Ts'o 204343d9c28STheodore Ts'o TP_STRUCT__entry( 205343d9c28STheodore Ts'o __field( dev_t, dev ) 206343d9c28STheodore Ts'o __field( unsigned long, tid ) 207343d9c28STheodore Ts'o __field( unsigned int, type ) 208343d9c28STheodore Ts'o __field( unsigned int, line_no ) 209343d9c28STheodore Ts'o __field( int, interval ) 210343d9c28STheodore Ts'o __field( int, sync ) 211343d9c28STheodore Ts'o __field( int, requested_blocks) 212343d9c28STheodore Ts'o __field( int, dirtied_blocks ) 213343d9c28STheodore Ts'o ), 214343d9c28STheodore Ts'o 215343d9c28STheodore Ts'o TP_fast_assign( 216343d9c28STheodore Ts'o __entry->dev = dev; 217343d9c28STheodore Ts'o __entry->tid = tid; 218343d9c28STheodore Ts'o __entry->type = type; 219343d9c28STheodore Ts'o __entry->line_no = line_no; 220343d9c28STheodore Ts'o __entry->interval = interval; 221343d9c28STheodore Ts'o __entry->sync = sync; 222343d9c28STheodore Ts'o __entry->requested_blocks = requested_blocks; 223343d9c28STheodore Ts'o __entry->dirtied_blocks = dirtied_blocks; 224343d9c28STheodore Ts'o ), 225343d9c28STheodore Ts'o 226343d9c28STheodore Ts'o TP_printk("dev %d,%d tid %lu type %u line_no %u interval %d " 227343d9c28STheodore Ts'o "sync %d requested_blocks %d dirtied_blocks %d", 228343d9c28STheodore Ts'o MAJOR(__entry->dev), MINOR(__entry->dev), __entry->tid, 229343d9c28STheodore Ts'o __entry->type, __entry->line_no, __entry->interval, 230343d9c28STheodore Ts'o __entry->sync, __entry->requested_blocks, 231343d9c28STheodore Ts'o __entry->dirtied_blocks) 232343d9c28STheodore Ts'o ); 233343d9c28STheodore Ts'o 234bf699327STheodore Ts'o TRACE_EVENT(jbd2_run_stats, 235bf699327STheodore Ts'o TP_PROTO(dev_t dev, unsigned long tid, 236bf699327STheodore Ts'o struct transaction_run_stats_s *stats), 237bf699327STheodore Ts'o 238bf699327STheodore Ts'o TP_ARGS(dev, tid, stats), 239bf699327STheodore Ts'o 240bf699327STheodore Ts'o TP_STRUCT__entry( 2410562e0baSJiaying Zhang __field( dev_t, dev ) 242bf699327STheodore Ts'o __field( unsigned long, tid ) 243bf699327STheodore Ts'o __field( unsigned long, wait ) 2449fff24aaSTheodore Ts'o __field( unsigned long, request_delay ) 245bf699327STheodore Ts'o __field( unsigned long, running ) 246bf699327STheodore Ts'o __field( unsigned long, locked ) 247bf699327STheodore Ts'o __field( unsigned long, flushing ) 248bf699327STheodore Ts'o __field( unsigned long, logging ) 249bf699327STheodore Ts'o __field( __u32, handle_count ) 250bf699327STheodore Ts'o __field( __u32, blocks ) 251bf699327STheodore Ts'o __field( __u32, blocks_logged ) 252bf699327STheodore Ts'o ), 253bf699327STheodore Ts'o 254bf699327STheodore Ts'o TP_fast_assign( 2550562e0baSJiaying Zhang __entry->dev = dev; 256bf699327STheodore Ts'o __entry->tid = tid; 257bf699327STheodore Ts'o __entry->wait = stats->rs_wait; 2589fff24aaSTheodore Ts'o __entry->request_delay = stats->rs_request_delay; 259bf699327STheodore Ts'o __entry->running = stats->rs_running; 260bf699327STheodore Ts'o __entry->locked = stats->rs_locked; 261bf699327STheodore Ts'o __entry->flushing = stats->rs_flushing; 262bf699327STheodore Ts'o __entry->logging = stats->rs_logging; 263bf699327STheodore Ts'o __entry->handle_count = stats->rs_handle_count; 264bf699327STheodore Ts'o __entry->blocks = stats->rs_blocks; 265bf699327STheodore Ts'o __entry->blocks_logged = stats->rs_blocks_logged; 266bf699327STheodore Ts'o ), 267bf699327STheodore Ts'o 2689fff24aaSTheodore Ts'o TP_printk("dev %d,%d tid %lu wait %u request_delay %u running %u " 2699fff24aaSTheodore Ts'o "locked %u flushing %u logging %u handle_count %u " 2709fff24aaSTheodore Ts'o "blocks %u blocks_logged %u", 2714862fd60STheodore Ts'o MAJOR(__entry->dev), MINOR(__entry->dev), __entry->tid, 272bf699327STheodore Ts'o jiffies_to_msecs(__entry->wait), 2739fff24aaSTheodore Ts'o jiffies_to_msecs(__entry->request_delay), 274bf699327STheodore Ts'o jiffies_to_msecs(__entry->running), 275bf699327STheodore Ts'o jiffies_to_msecs(__entry->locked), 276bf699327STheodore Ts'o jiffies_to_msecs(__entry->flushing), 277bf699327STheodore Ts'o jiffies_to_msecs(__entry->logging), 278bf699327STheodore Ts'o __entry->handle_count, __entry->blocks, 279bf699327STheodore Ts'o __entry->blocks_logged) 280bf699327STheodore Ts'o ); 281bf699327STheodore Ts'o 282bf699327STheodore Ts'o TRACE_EVENT(jbd2_checkpoint_stats, 283bf699327STheodore Ts'o TP_PROTO(dev_t dev, unsigned long tid, 284bf699327STheodore Ts'o struct transaction_chp_stats_s *stats), 285bf699327STheodore Ts'o 286bf699327STheodore Ts'o TP_ARGS(dev, tid, stats), 287bf699327STheodore Ts'o 288bf699327STheodore Ts'o TP_STRUCT__entry( 2890562e0baSJiaying Zhang __field( dev_t, dev ) 290bf699327STheodore Ts'o __field( unsigned long, tid ) 291bf699327STheodore Ts'o __field( unsigned long, chp_time ) 292bf699327STheodore Ts'o __field( __u32, forced_to_close ) 293bf699327STheodore Ts'o __field( __u32, written ) 294bf699327STheodore Ts'o __field( __u32, dropped ) 295bf699327STheodore Ts'o ), 296bf699327STheodore Ts'o 297bf699327STheodore Ts'o TP_fast_assign( 2980562e0baSJiaying Zhang __entry->dev = dev; 299bf699327STheodore Ts'o __entry->tid = tid; 300bf699327STheodore Ts'o __entry->chp_time = stats->cs_chp_time; 301bf699327STheodore Ts'o __entry->forced_to_close= stats->cs_forced_to_close; 302bf699327STheodore Ts'o __entry->written = stats->cs_written; 303bf699327STheodore Ts'o __entry->dropped = stats->cs_dropped; 304bf699327STheodore Ts'o ), 305bf699327STheodore Ts'o 3064862fd60STheodore Ts'o TP_printk("dev %d,%d tid %lu chp_time %u forced_to_close %u " 307bf699327STheodore Ts'o "written %u dropped %u", 3084862fd60STheodore Ts'o MAJOR(__entry->dev), MINOR(__entry->dev), __entry->tid, 309bf699327STheodore Ts'o jiffies_to_msecs(__entry->chp_time), 310bf699327STheodore Ts'o __entry->forced_to_close, __entry->written, __entry->dropped) 311bf699327STheodore Ts'o ); 312bf699327STheodore Ts'o 31379feb521SJan Kara TRACE_EVENT(jbd2_update_log_tail, 31471f2be21STheodore Ts'o 31571f2be21STheodore Ts'o TP_PROTO(journal_t *journal, tid_t first_tid, 31671f2be21STheodore Ts'o unsigned long block_nr, unsigned long freed), 31771f2be21STheodore Ts'o 31871f2be21STheodore Ts'o TP_ARGS(journal, first_tid, block_nr, freed), 31971f2be21STheodore Ts'o 32071f2be21STheodore Ts'o TP_STRUCT__entry( 3210562e0baSJiaying Zhang __field( dev_t, dev ) 32271f2be21STheodore Ts'o __field( tid_t, tail_sequence ) 32371f2be21STheodore Ts'o __field( tid_t, first_tid ) 32471f2be21STheodore Ts'o __field(unsigned long, block_nr ) 32571f2be21STheodore Ts'o __field(unsigned long, freed ) 32671f2be21STheodore Ts'o ), 32771f2be21STheodore Ts'o 32871f2be21STheodore Ts'o TP_fast_assign( 3290562e0baSJiaying Zhang __entry->dev = journal->j_fs_dev->bd_dev; 33071f2be21STheodore Ts'o __entry->tail_sequence = journal->j_tail_sequence; 33171f2be21STheodore Ts'o __entry->first_tid = first_tid; 33271f2be21STheodore Ts'o __entry->block_nr = block_nr; 33371f2be21STheodore Ts'o __entry->freed = freed; 33471f2be21STheodore Ts'o ), 33571f2be21STheodore Ts'o 3364862fd60STheodore Ts'o TP_printk("dev %d,%d from %u to %u offset %lu freed %lu", 3374862fd60STheodore Ts'o MAJOR(__entry->dev), MINOR(__entry->dev), 3384862fd60STheodore Ts'o __entry->tail_sequence, __entry->first_tid, 3394862fd60STheodore Ts'o __entry->block_nr, __entry->freed) 34071f2be21STheodore Ts'o ); 34171f2be21STheodore Ts'o 34224bcc89cSJan Kara TRACE_EVENT(jbd2_write_superblock, 3432201c590SSeiji Aguchi 34479feb521SJan Kara TP_PROTO(journal_t *journal, int write_op), 3452201c590SSeiji Aguchi 34679feb521SJan Kara TP_ARGS(journal, write_op), 3472201c590SSeiji Aguchi 3482201c590SSeiji Aguchi TP_STRUCT__entry( 3492201c590SSeiji Aguchi __field( dev_t, dev ) 35079feb521SJan Kara __field( int, write_op ) 3512201c590SSeiji Aguchi ), 3522201c590SSeiji Aguchi 3532201c590SSeiji Aguchi TP_fast_assign( 3542201c590SSeiji Aguchi __entry->dev = journal->j_fs_dev->bd_dev; 35579feb521SJan Kara __entry->write_op = write_op; 3562201c590SSeiji Aguchi ), 3572201c590SSeiji Aguchi 35879feb521SJan Kara TP_printk("dev %d,%d write_op %x", MAJOR(__entry->dev), 35979feb521SJan Kara MINOR(__entry->dev), __entry->write_op) 3602201c590SSeiji Aguchi ); 3612201c590SSeiji Aguchi 362f783f091STheodore Ts'o TRACE_EVENT(jbd2_lock_buffer_stall, 363f783f091STheodore Ts'o 364f783f091STheodore Ts'o TP_PROTO(dev_t dev, unsigned long stall_ms), 365f783f091STheodore Ts'o 366f783f091STheodore Ts'o TP_ARGS(dev, stall_ms), 367f783f091STheodore Ts'o 368f783f091STheodore Ts'o TP_STRUCT__entry( 369f783f091STheodore Ts'o __field( dev_t, dev ) 370f783f091STheodore Ts'o __field(unsigned long, stall_ms ) 371f783f091STheodore Ts'o ), 372f783f091STheodore Ts'o 373f783f091STheodore Ts'o TP_fast_assign( 374f783f091STheodore Ts'o __entry->dev = dev; 375f783f091STheodore Ts'o __entry->stall_ms = stall_ms; 376f783f091STheodore Ts'o ), 377f783f091STheodore Ts'o 378f783f091STheodore Ts'o TP_printk("dev %d,%d stall_ms %lu", 379f783f091STheodore Ts'o MAJOR(__entry->dev), MINOR(__entry->dev), 380f783f091STheodore Ts'o __entry->stall_ms) 381f783f091STheodore Ts'o ); 382f783f091STheodore Ts'o 383879c5e6bSTheodore Ts'o #endif /* _TRACE_JBD2_H */ 384879c5e6bSTheodore Ts'o 385879c5e6bSTheodore Ts'o /* This part must be outside protection */ 386879c5e6bSTheodore Ts'o #include <trace/define_trace.h> 387