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