1*879c5e6bSTheodore Ts'o #if !defined(_TRACE_JBD2_H) || defined(TRACE_HEADER_MULTI_READ) 2*879c5e6bSTheodore Ts'o #define _TRACE_JBD2_H 3*879c5e6bSTheodore Ts'o 4*879c5e6bSTheodore Ts'o #include <linux/jbd2.h> 5*879c5e6bSTheodore Ts'o #include <linux/tracepoint.h> 6*879c5e6bSTheodore Ts'o 7*879c5e6bSTheodore Ts'o #undef TRACE_SYSTEM 8*879c5e6bSTheodore Ts'o #define TRACE_SYSTEM jbd2 9*879c5e6bSTheodore Ts'o 10*879c5e6bSTheodore Ts'o TRACE_EVENT(jbd2_checkpoint, 11*879c5e6bSTheodore Ts'o 12*879c5e6bSTheodore Ts'o TP_PROTO(journal_t *journal, int result), 13*879c5e6bSTheodore Ts'o 14*879c5e6bSTheodore Ts'o TP_ARGS(journal, result), 15*879c5e6bSTheodore Ts'o 16*879c5e6bSTheodore Ts'o TP_STRUCT__entry( 17*879c5e6bSTheodore Ts'o __field( dev_t, dev ) 18*879c5e6bSTheodore Ts'o __field( int, result ) 19*879c5e6bSTheodore Ts'o ), 20*879c5e6bSTheodore Ts'o 21*879c5e6bSTheodore Ts'o TP_fast_assign( 22*879c5e6bSTheodore Ts'o __entry->dev = journal->j_fs_dev->bd_dev; 23*879c5e6bSTheodore Ts'o __entry->result = result; 24*879c5e6bSTheodore Ts'o ), 25*879c5e6bSTheodore Ts'o 26*879c5e6bSTheodore Ts'o TP_printk("dev %s result %d", 27*879c5e6bSTheodore Ts'o jbd2_dev_to_name(__entry->dev), __entry->result) 28*879c5e6bSTheodore Ts'o ); 29*879c5e6bSTheodore Ts'o 30*879c5e6bSTheodore Ts'o TRACE_EVENT(jbd2_start_commit, 31*879c5e6bSTheodore Ts'o 32*879c5e6bSTheodore Ts'o TP_PROTO(journal_t *journal, transaction_t *commit_transaction), 33*879c5e6bSTheodore Ts'o 34*879c5e6bSTheodore Ts'o TP_ARGS(journal, commit_transaction), 35*879c5e6bSTheodore Ts'o 36*879c5e6bSTheodore Ts'o TP_STRUCT__entry( 37*879c5e6bSTheodore Ts'o __field( dev_t, dev ) 38*879c5e6bSTheodore Ts'o __field( char, sync_commit ) 39*879c5e6bSTheodore Ts'o __field( int, transaction ) 40*879c5e6bSTheodore Ts'o ), 41*879c5e6bSTheodore Ts'o 42*879c5e6bSTheodore Ts'o TP_fast_assign( 43*879c5e6bSTheodore Ts'o __entry->dev = journal->j_fs_dev->bd_dev; 44*879c5e6bSTheodore Ts'o __entry->sync_commit = commit_transaction->t_synchronous_commit; 45*879c5e6bSTheodore Ts'o __entry->transaction = commit_transaction->t_tid; 46*879c5e6bSTheodore Ts'o ), 47*879c5e6bSTheodore Ts'o 48*879c5e6bSTheodore Ts'o TP_printk("dev %s transaction %d sync %d", 49*879c5e6bSTheodore Ts'o jbd2_dev_to_name(__entry->dev), __entry->transaction, 50*879c5e6bSTheodore Ts'o __entry->sync_commit) 51*879c5e6bSTheodore Ts'o ); 52*879c5e6bSTheodore Ts'o 53*879c5e6bSTheodore Ts'o TRACE_EVENT(jbd2_commit_locking, 54*879c5e6bSTheodore Ts'o 55*879c5e6bSTheodore Ts'o TP_PROTO(journal_t *journal, transaction_t *commit_transaction), 56*879c5e6bSTheodore Ts'o 57*879c5e6bSTheodore Ts'o TP_ARGS(journal, commit_transaction), 58*879c5e6bSTheodore Ts'o 59*879c5e6bSTheodore Ts'o TP_STRUCT__entry( 60*879c5e6bSTheodore Ts'o __field( dev_t, dev ) 61*879c5e6bSTheodore Ts'o __field( char, sync_commit ) 62*879c5e6bSTheodore Ts'o __field( int, transaction ) 63*879c5e6bSTheodore Ts'o ), 64*879c5e6bSTheodore Ts'o 65*879c5e6bSTheodore Ts'o TP_fast_assign( 66*879c5e6bSTheodore Ts'o __entry->dev = journal->j_fs_dev->bd_dev; 67*879c5e6bSTheodore Ts'o __entry->sync_commit = commit_transaction->t_synchronous_commit; 68*879c5e6bSTheodore Ts'o __entry->transaction = commit_transaction->t_tid; 69*879c5e6bSTheodore Ts'o ), 70*879c5e6bSTheodore Ts'o 71*879c5e6bSTheodore Ts'o TP_printk("dev %s transaction %d sync %d", 72*879c5e6bSTheodore Ts'o jbd2_dev_to_name(__entry->dev), __entry->transaction, 73*879c5e6bSTheodore Ts'o __entry->sync_commit) 74*879c5e6bSTheodore Ts'o ); 75*879c5e6bSTheodore Ts'o 76*879c5e6bSTheodore Ts'o TRACE_EVENT(jbd2_commit_flushing, 77*879c5e6bSTheodore Ts'o 78*879c5e6bSTheodore Ts'o TP_PROTO(journal_t *journal, transaction_t *commit_transaction), 79*879c5e6bSTheodore Ts'o 80*879c5e6bSTheodore Ts'o TP_ARGS(journal, commit_transaction), 81*879c5e6bSTheodore Ts'o 82*879c5e6bSTheodore Ts'o TP_STRUCT__entry( 83*879c5e6bSTheodore Ts'o __field( dev_t, dev ) 84*879c5e6bSTheodore Ts'o __field( char, sync_commit ) 85*879c5e6bSTheodore Ts'o __field( int, transaction ) 86*879c5e6bSTheodore Ts'o ), 87*879c5e6bSTheodore Ts'o 88*879c5e6bSTheodore Ts'o TP_fast_assign( 89*879c5e6bSTheodore Ts'o __entry->dev = journal->j_fs_dev->bd_dev; 90*879c5e6bSTheodore Ts'o __entry->sync_commit = commit_transaction->t_synchronous_commit; 91*879c5e6bSTheodore Ts'o __entry->transaction = commit_transaction->t_tid; 92*879c5e6bSTheodore Ts'o ), 93*879c5e6bSTheodore Ts'o 94*879c5e6bSTheodore Ts'o TP_printk("dev %s transaction %d sync %d", 95*879c5e6bSTheodore Ts'o jbd2_dev_to_name(__entry->dev), __entry->transaction, 96*879c5e6bSTheodore Ts'o __entry->sync_commit) 97*879c5e6bSTheodore Ts'o ); 98*879c5e6bSTheodore Ts'o 99*879c5e6bSTheodore Ts'o TRACE_EVENT(jbd2_commit_logging, 100*879c5e6bSTheodore Ts'o 101*879c5e6bSTheodore Ts'o TP_PROTO(journal_t *journal, transaction_t *commit_transaction), 102*879c5e6bSTheodore Ts'o 103*879c5e6bSTheodore Ts'o TP_ARGS(journal, commit_transaction), 104*879c5e6bSTheodore Ts'o 105*879c5e6bSTheodore Ts'o TP_STRUCT__entry( 106*879c5e6bSTheodore Ts'o __field( dev_t, dev ) 107*879c5e6bSTheodore Ts'o __field( char, sync_commit ) 108*879c5e6bSTheodore Ts'o __field( int, transaction ) 109*879c5e6bSTheodore Ts'o ), 110*879c5e6bSTheodore Ts'o 111*879c5e6bSTheodore Ts'o TP_fast_assign( 112*879c5e6bSTheodore Ts'o __entry->dev = journal->j_fs_dev->bd_dev; 113*879c5e6bSTheodore Ts'o __entry->sync_commit = commit_transaction->t_synchronous_commit; 114*879c5e6bSTheodore Ts'o __entry->transaction = commit_transaction->t_tid; 115*879c5e6bSTheodore Ts'o ), 116*879c5e6bSTheodore Ts'o 117*879c5e6bSTheodore Ts'o TP_printk("dev %s transaction %d sync %d", 118*879c5e6bSTheodore Ts'o jbd2_dev_to_name(__entry->dev), __entry->transaction, 119*879c5e6bSTheodore Ts'o __entry->sync_commit) 120*879c5e6bSTheodore Ts'o ); 121*879c5e6bSTheodore Ts'o 122*879c5e6bSTheodore Ts'o TRACE_EVENT(jbd2_end_commit, 123*879c5e6bSTheodore Ts'o TP_PROTO(journal_t *journal, transaction_t *commit_transaction), 124*879c5e6bSTheodore Ts'o 125*879c5e6bSTheodore Ts'o TP_ARGS(journal, commit_transaction), 126*879c5e6bSTheodore Ts'o 127*879c5e6bSTheodore Ts'o TP_STRUCT__entry( 128*879c5e6bSTheodore Ts'o __field( dev_t, dev ) 129*879c5e6bSTheodore Ts'o __field( char, sync_commit ) 130*879c5e6bSTheodore Ts'o __field( int, transaction ) 131*879c5e6bSTheodore Ts'o __field( int, head ) 132*879c5e6bSTheodore Ts'o ), 133*879c5e6bSTheodore Ts'o 134*879c5e6bSTheodore Ts'o TP_fast_assign( 135*879c5e6bSTheodore Ts'o __entry->dev = journal->j_fs_dev->bd_dev; 136*879c5e6bSTheodore Ts'o __entry->sync_commit = commit_transaction->t_synchronous_commit; 137*879c5e6bSTheodore Ts'o __entry->transaction = commit_transaction->t_tid; 138*879c5e6bSTheodore Ts'o __entry->head = journal->j_tail_sequence; 139*879c5e6bSTheodore Ts'o ), 140*879c5e6bSTheodore Ts'o 141*879c5e6bSTheodore Ts'o TP_printk("dev %s transaction %d sync %d head %d", 142*879c5e6bSTheodore Ts'o jbd2_dev_to_name(__entry->dev), __entry->transaction, 143*879c5e6bSTheodore Ts'o __entry->sync_commit, __entry->head) 144*879c5e6bSTheodore Ts'o ); 145*879c5e6bSTheodore Ts'o 146*879c5e6bSTheodore Ts'o TRACE_EVENT(jbd2_submit_inode_data, 147*879c5e6bSTheodore Ts'o TP_PROTO(struct inode *inode), 148*879c5e6bSTheodore Ts'o 149*879c5e6bSTheodore Ts'o TP_ARGS(inode), 150*879c5e6bSTheodore Ts'o 151*879c5e6bSTheodore Ts'o TP_STRUCT__entry( 152*879c5e6bSTheodore Ts'o __field( dev_t, dev ) 153*879c5e6bSTheodore Ts'o __field( ino_t, ino ) 154*879c5e6bSTheodore Ts'o ), 155*879c5e6bSTheodore Ts'o 156*879c5e6bSTheodore Ts'o TP_fast_assign( 157*879c5e6bSTheodore Ts'o __entry->dev = inode->i_sb->s_dev; 158*879c5e6bSTheodore Ts'o __entry->ino = inode->i_ino; 159*879c5e6bSTheodore Ts'o ), 160*879c5e6bSTheodore Ts'o 161*879c5e6bSTheodore Ts'o TP_printk("dev %s ino %lu", 162*879c5e6bSTheodore Ts'o jbd2_dev_to_name(__entry->dev), __entry->ino) 163*879c5e6bSTheodore Ts'o ); 164*879c5e6bSTheodore Ts'o 165*879c5e6bSTheodore Ts'o #endif /* _TRACE_JBD2_H */ 166*879c5e6bSTheodore Ts'o 167*879c5e6bSTheodore Ts'o /* This part must be outside protection */ 168*879c5e6bSTheodore Ts'o #include <trace/define_trace.h> 169