linux/include/trace/events/jbd2.h
<<
>>
Prefs
   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_handle_start,
 136        TP_PROTO(dev_t dev, unsigned long tid, unsigned int type,
 137                 unsigned int line_no, int requested_blocks),
 138
 139        TP_ARGS(dev, tid, type, line_no, requested_blocks),
 140
 141        TP_STRUCT__entry(
 142                __field(                dev_t,  dev             )
 143                __field(        unsigned long,  tid             )
 144                __field(         unsigned int,  type            )
 145                __field(         unsigned int,  line_no         )
 146                __field(                  int,  requested_blocks)
 147        ),
 148
 149        TP_fast_assign(
 150                __entry->dev              = dev;
 151                __entry->tid              = tid;
 152                __entry->type             = type;
 153                __entry->line_no          = line_no;
 154                __entry->requested_blocks = requested_blocks;
 155        ),
 156
 157        TP_printk("dev %d,%d tid %lu type %u line_no %u "
 158                  "requested_blocks %d",
 159                  MAJOR(__entry->dev), MINOR(__entry->dev), __entry->tid,
 160                  __entry->type, __entry->line_no, __entry->requested_blocks)
 161);
 162
 163TRACE_EVENT(jbd2_handle_extend,
 164        TP_PROTO(dev_t dev, unsigned long tid, unsigned int type,
 165                 unsigned int line_no, int buffer_credits,
 166                 int requested_blocks),
 167
 168        TP_ARGS(dev, tid, type, line_no, buffer_credits, requested_blocks),
 169
 170        TP_STRUCT__entry(
 171                __field(                dev_t,  dev             )
 172                __field(        unsigned long,  tid             )
 173                __field(         unsigned int,  type            )
 174                __field(         unsigned int,  line_no         )
 175                __field(                  int,  buffer_credits  )
 176                __field(                  int,  requested_blocks)
 177        ),
 178
 179        TP_fast_assign(
 180                __entry->dev              = dev;
 181                __entry->tid              = tid;
 182                __entry->type             = type;
 183                __entry->line_no          = line_no;
 184                __entry->buffer_credits   = buffer_credits;
 185                __entry->requested_blocks = requested_blocks;
 186        ),
 187
 188        TP_printk("dev %d,%d tid %lu type %u line_no %u "
 189                  "buffer_credits %d requested_blocks %d",
 190                  MAJOR(__entry->dev), MINOR(__entry->dev), __entry->tid,
 191                  __entry->type, __entry->line_no, __entry->buffer_credits,
 192                  __entry->requested_blocks)
 193);
 194
 195TRACE_EVENT(jbd2_handle_stats,
 196        TP_PROTO(dev_t dev, unsigned long tid, unsigned int type,
 197                 unsigned int line_no, int interval, int sync,
 198                 int requested_blocks, int dirtied_blocks),
 199
 200        TP_ARGS(dev, tid, type, line_no, interval, sync,
 201                requested_blocks, dirtied_blocks),
 202
 203        TP_STRUCT__entry(
 204                __field(                dev_t,  dev             )
 205                __field(        unsigned long,  tid             )
 206                __field(         unsigned int,  type            )
 207                __field(         unsigned int,  line_no         )
 208                __field(                  int,  interval        )
 209                __field(                  int,  sync            )
 210                __field(                  int,  requested_blocks)
 211                __field(                  int,  dirtied_blocks  )
 212        ),
 213
 214        TP_fast_assign(
 215                __entry->dev              = dev;
 216                __entry->tid              = tid;
 217                __entry->type             = type;
 218                __entry->line_no          = line_no;
 219                __entry->interval         = interval;
 220                __entry->sync             = sync;
 221                __entry->requested_blocks = requested_blocks;
 222                __entry->dirtied_blocks   = dirtied_blocks;
 223        ),
 224
 225        TP_printk("dev %d,%d tid %lu type %u line_no %u interval %d "
 226                  "sync %d requested_blocks %d dirtied_blocks %d",
 227                  MAJOR(__entry->dev), MINOR(__entry->dev), __entry->tid,
 228                  __entry->type, __entry->line_no, __entry->interval,
 229                  __entry->sync, __entry->requested_blocks,
 230                  __entry->dirtied_blocks)
 231);
 232
 233TRACE_EVENT(jbd2_run_stats,
 234        TP_PROTO(dev_t dev, unsigned long tid,
 235                 struct transaction_run_stats_s *stats),
 236
 237        TP_ARGS(dev, tid, stats),
 238
 239        TP_STRUCT__entry(
 240                __field(                dev_t,  dev             )
 241                __field(        unsigned long,  tid             )
 242                __field(        unsigned long,  wait            )
 243                __field(        unsigned long,  request_delay   )
 244                __field(        unsigned long,  running         )
 245                __field(        unsigned long,  locked          )
 246                __field(        unsigned long,  flushing        )
 247                __field(        unsigned long,  logging         )
 248                __field(                __u32,  handle_count    )
 249                __field(                __u32,  blocks          )
 250                __field(                __u32,  blocks_logged   )
 251        ),
 252
 253        TP_fast_assign(
 254                __entry->dev            = dev;
 255                __entry->tid            = tid;
 256                __entry->wait           = stats->rs_wait;
 257                __entry->request_delay  = stats->rs_request_delay;
 258                __entry->running        = stats->rs_running;
 259                __entry->locked         = stats->rs_locked;
 260                __entry->flushing       = stats->rs_flushing;
 261                __entry->logging        = stats->rs_logging;
 262                __entry->handle_count   = stats->rs_handle_count;
 263                __entry->blocks         = stats->rs_blocks;
 264                __entry->blocks_logged  = stats->rs_blocks_logged;
 265        ),
 266
 267        TP_printk("dev %d,%d tid %lu wait %u request_delay %u running %u "
 268                  "locked %u flushing %u logging %u handle_count %u "
 269                  "blocks %u blocks_logged %u",
 270                  MAJOR(__entry->dev), MINOR(__entry->dev), __entry->tid,
 271                  jiffies_to_msecs(__entry->wait),
 272                  jiffies_to_msecs(__entry->request_delay),
 273                  jiffies_to_msecs(__entry->running),
 274                  jiffies_to_msecs(__entry->locked),
 275                  jiffies_to_msecs(__entry->flushing),
 276                  jiffies_to_msecs(__entry->logging),
 277                  __entry->handle_count, __entry->blocks,
 278                  __entry->blocks_logged)
 279);
 280
 281TRACE_EVENT(jbd2_checkpoint_stats,
 282        TP_PROTO(dev_t dev, unsigned long tid,
 283                 struct transaction_chp_stats_s *stats),
 284
 285        TP_ARGS(dev, tid, stats),
 286
 287        TP_STRUCT__entry(
 288                __field(                dev_t,  dev             )
 289                __field(        unsigned long,  tid             )
 290                __field(        unsigned long,  chp_time        )
 291                __field(                __u32,  forced_to_close )
 292                __field(                __u32,  written         )
 293                __field(                __u32,  dropped         )
 294        ),
 295
 296        TP_fast_assign(
 297                __entry->dev            = dev;
 298                __entry->tid            = tid;
 299                __entry->chp_time       = stats->cs_chp_time;
 300                __entry->forced_to_close= stats->cs_forced_to_close;
 301                __entry->written        = stats->cs_written;
 302                __entry->dropped        = stats->cs_dropped;
 303        ),
 304
 305        TP_printk("dev %d,%d tid %lu chp_time %u forced_to_close %u "
 306                  "written %u dropped %u",
 307                  MAJOR(__entry->dev), MINOR(__entry->dev), __entry->tid,
 308                  jiffies_to_msecs(__entry->chp_time),
 309                  __entry->forced_to_close, __entry->written, __entry->dropped)
 310);
 311
 312TRACE_EVENT(jbd2_update_log_tail,
 313
 314        TP_PROTO(journal_t *journal, tid_t first_tid,
 315                 unsigned long block_nr, unsigned long freed),
 316
 317        TP_ARGS(journal, first_tid, block_nr, freed),
 318
 319        TP_STRUCT__entry(
 320                __field(        dev_t,  dev                     )
 321                __field(        tid_t,  tail_sequence           )
 322                __field(        tid_t,  first_tid               )
 323                __field(unsigned long,  block_nr                )
 324                __field(unsigned long,  freed                   )
 325        ),
 326
 327        TP_fast_assign(
 328                __entry->dev            = journal->j_fs_dev->bd_dev;
 329                __entry->tail_sequence  = journal->j_tail_sequence;
 330                __entry->first_tid      = first_tid;
 331                __entry->block_nr       = block_nr;
 332                __entry->freed          = freed;
 333        ),
 334
 335        TP_printk("dev %d,%d from %u to %u offset %lu freed %lu",
 336                  MAJOR(__entry->dev), MINOR(__entry->dev),
 337                  __entry->tail_sequence, __entry->first_tid,
 338                  __entry->block_nr, __entry->freed)
 339);
 340
 341TRACE_EVENT(jbd2_write_superblock,
 342
 343        TP_PROTO(journal_t *journal, int write_op),
 344
 345        TP_ARGS(journal, write_op),
 346
 347        TP_STRUCT__entry(
 348                __field(        dev_t,  dev                     )
 349                __field(          int,  write_op                )
 350        ),
 351
 352        TP_fast_assign(
 353                __entry->dev            = journal->j_fs_dev->bd_dev;
 354                __entry->write_op       = write_op;
 355        ),
 356
 357        TP_printk("dev %d,%d write_op %x", MAJOR(__entry->dev),
 358                  MINOR(__entry->dev), __entry->write_op)
 359);
 360
 361TRACE_EVENT(jbd2_lock_buffer_stall,
 362
 363        TP_PROTO(dev_t dev, unsigned long stall_ms),
 364
 365        TP_ARGS(dev, stall_ms),
 366
 367        TP_STRUCT__entry(
 368                __field(        dev_t, dev      )
 369                __field(unsigned long, stall_ms )
 370        ),
 371
 372        TP_fast_assign(
 373                __entry->dev            = dev;
 374                __entry->stall_ms       = stall_ms;
 375        ),
 376
 377        TP_printk("dev %d,%d stall_ms %lu",
 378                MAJOR(__entry->dev), MINOR(__entry->dev),
 379                __entry->stall_ms)
 380);
 381
 382#endif /* _TRACE_JBD2_H */
 383
 384/* This part must be outside protection */
 385#include <trace/define_trace.h>
 386