GNU Linux-libre 4.9.318-gnu1
[releases.git] / include / trace / events / ext4.h
1 #undef TRACE_SYSTEM
2 #define TRACE_SYSTEM ext4
3
4 #if !defined(_TRACE_EXT4_H) || defined(TRACE_HEADER_MULTI_READ)
5 #define _TRACE_EXT4_H
6
7 #include <linux/writeback.h>
8 #include <linux/tracepoint.h>
9
10 struct ext4_allocation_context;
11 struct ext4_allocation_request;
12 struct ext4_extent;
13 struct ext4_prealloc_space;
14 struct ext4_inode_info;
15 struct mpage_da_data;
16 struct ext4_map_blocks;
17 struct extent_status;
18
19 #define EXT4_I(inode) (container_of(inode, struct ext4_inode_info, vfs_inode))
20
21 #define show_mballoc_flags(flags) __print_flags(flags, "|",     \
22         { EXT4_MB_HINT_MERGE,           "HINT_MERGE" },         \
23         { EXT4_MB_HINT_RESERVED,        "HINT_RESV" },          \
24         { EXT4_MB_HINT_METADATA,        "HINT_MDATA" },         \
25         { EXT4_MB_HINT_FIRST,           "HINT_FIRST" },         \
26         { EXT4_MB_HINT_BEST,            "HINT_BEST" },          \
27         { EXT4_MB_HINT_DATA,            "HINT_DATA" },          \
28         { EXT4_MB_HINT_NOPREALLOC,      "HINT_NOPREALLOC" },    \
29         { EXT4_MB_HINT_GROUP_ALLOC,     "HINT_GRP_ALLOC" },     \
30         { EXT4_MB_HINT_GOAL_ONLY,       "HINT_GOAL_ONLY" },     \
31         { EXT4_MB_HINT_TRY_GOAL,        "HINT_TRY_GOAL" },      \
32         { EXT4_MB_DELALLOC_RESERVED,    "DELALLOC_RESV" },      \
33         { EXT4_MB_STREAM_ALLOC,         "STREAM_ALLOC" },       \
34         { EXT4_MB_USE_ROOT_BLOCKS,      "USE_ROOT_BLKS" },      \
35         { EXT4_MB_USE_RESERVED,         "USE_RESV" })
36
37 #define show_map_flags(flags) __print_flags(flags, "|",                 \
38         { EXT4_GET_BLOCKS_CREATE,               "CREATE" },             \
39         { EXT4_GET_BLOCKS_UNWRIT_EXT,           "UNWRIT" },             \
40         { EXT4_GET_BLOCKS_DELALLOC_RESERVE,     "DELALLOC" },           \
41         { EXT4_GET_BLOCKS_PRE_IO,               "PRE_IO" },             \
42         { EXT4_GET_BLOCKS_CONVERT,              "CONVERT" },            \
43         { EXT4_GET_BLOCKS_METADATA_NOFAIL,      "METADATA_NOFAIL" },    \
44         { EXT4_GET_BLOCKS_NO_NORMALIZE,         "NO_NORMALIZE" },       \
45         { EXT4_GET_BLOCKS_KEEP_SIZE,            "KEEP_SIZE" },          \
46         { EXT4_GET_BLOCKS_ZERO,                 "ZERO" })
47
48 #define show_mflags(flags) __print_flags(flags, "",     \
49         { EXT4_MAP_NEW,         "N" },                  \
50         { EXT4_MAP_MAPPED,      "M" },                  \
51         { EXT4_MAP_UNWRITTEN,   "U" },                  \
52         { EXT4_MAP_BOUNDARY,    "B" })
53
54 #define show_free_flags(flags) __print_flags(flags, "|",        \
55         { EXT4_FREE_BLOCKS_METADATA,            "METADATA" },   \
56         { EXT4_FREE_BLOCKS_FORGET,              "FORGET" },     \
57         { EXT4_FREE_BLOCKS_VALIDATED,           "VALIDATED" },  \
58         { EXT4_FREE_BLOCKS_NO_QUOT_UPDATE,      "NO_QUOTA" },   \
59         { EXT4_FREE_BLOCKS_NOFREE_FIRST_CLUSTER,"1ST_CLUSTER" },\
60         { EXT4_FREE_BLOCKS_NOFREE_LAST_CLUSTER, "LAST_CLUSTER" })
61
62 #define show_extent_status(status) __print_flags(status, "",    \
63         { EXTENT_STATUS_WRITTEN,        "W" },                  \
64         { EXTENT_STATUS_UNWRITTEN,      "U" },                  \
65         { EXTENT_STATUS_DELAYED,        "D" },                  \
66         { EXTENT_STATUS_HOLE,           "H" })
67
68 #define show_falloc_mode(mode) __print_flags(mode, "|",         \
69         { FALLOC_FL_KEEP_SIZE,          "KEEP_SIZE"},           \
70         { FALLOC_FL_PUNCH_HOLE,         "PUNCH_HOLE"},          \
71         { FALLOC_FL_NO_HIDE_STALE,      "NO_HIDE_STALE"},       \
72         { FALLOC_FL_COLLAPSE_RANGE,     "COLLAPSE_RANGE"},      \
73         { FALLOC_FL_ZERO_RANGE,         "ZERO_RANGE"})
74
75
76 TRACE_EVENT(ext4_other_inode_update_time,
77         TP_PROTO(struct inode *inode, ino_t orig_ino),
78
79         TP_ARGS(inode, orig_ino),
80
81         TP_STRUCT__entry(
82                 __field(        dev_t,  dev                     )
83                 __field(        ino_t,  ino                     )
84                 __field(        ino_t,  orig_ino                )
85                 __field(        uid_t,  uid                     )
86                 __field(        gid_t,  gid                     )
87                 __field(        __u16, mode                     )
88         ),
89
90         TP_fast_assign(
91                 __entry->orig_ino = orig_ino;
92                 __entry->dev    = inode->i_sb->s_dev;
93                 __entry->ino    = inode->i_ino;
94                 __entry->uid    = i_uid_read(inode);
95                 __entry->gid    = i_gid_read(inode);
96                 __entry->mode   = inode->i_mode;
97         ),
98
99         TP_printk("dev %d,%d orig_ino %lu ino %lu mode 0%o uid %u gid %u",
100                   MAJOR(__entry->dev), MINOR(__entry->dev),
101                   (unsigned long) __entry->orig_ino,
102                   (unsigned long) __entry->ino, __entry->mode,
103                   __entry->uid, __entry->gid)
104 );
105
106 TRACE_EVENT(ext4_free_inode,
107         TP_PROTO(struct inode *inode),
108
109         TP_ARGS(inode),
110
111         TP_STRUCT__entry(
112                 __field(        dev_t,  dev                     )
113                 __field(        ino_t,  ino                     )
114                 __field(        uid_t,  uid                     )
115                 __field(        gid_t,  gid                     )
116                 __field(        __u64, blocks                   )
117                 __field(        __u16, mode                     )
118         ),
119
120         TP_fast_assign(
121                 __entry->dev    = inode->i_sb->s_dev;
122                 __entry->ino    = inode->i_ino;
123                 __entry->uid    = i_uid_read(inode);
124                 __entry->gid    = i_gid_read(inode);
125                 __entry->blocks = inode->i_blocks;
126                 __entry->mode   = inode->i_mode;
127         ),
128
129         TP_printk("dev %d,%d ino %lu mode 0%o uid %u gid %u blocks %llu",
130                   MAJOR(__entry->dev), MINOR(__entry->dev),
131                   (unsigned long) __entry->ino, __entry->mode,
132                   __entry->uid, __entry->gid, __entry->blocks)
133 );
134
135 TRACE_EVENT(ext4_request_inode,
136         TP_PROTO(struct inode *dir, int mode),
137
138         TP_ARGS(dir, mode),
139
140         TP_STRUCT__entry(
141                 __field(        dev_t,  dev                     )
142                 __field(        ino_t,  dir                     )
143                 __field(        __u16, mode                     )
144         ),
145
146         TP_fast_assign(
147                 __entry->dev    = dir->i_sb->s_dev;
148                 __entry->dir    = dir->i_ino;
149                 __entry->mode   = mode;
150         ),
151
152         TP_printk("dev %d,%d dir %lu mode 0%o",
153                   MAJOR(__entry->dev), MINOR(__entry->dev),
154                   (unsigned long) __entry->dir, __entry->mode)
155 );
156
157 TRACE_EVENT(ext4_allocate_inode,
158         TP_PROTO(struct inode *inode, struct inode *dir, int mode),
159
160         TP_ARGS(inode, dir, mode),
161
162         TP_STRUCT__entry(
163                 __field(        dev_t,  dev                     )
164                 __field(        ino_t,  ino                     )
165                 __field(        ino_t,  dir                     )
166                 __field(        __u16,  mode                    )
167         ),
168
169         TP_fast_assign(
170                 __entry->dev    = inode->i_sb->s_dev;
171                 __entry->ino    = inode->i_ino;
172                 __entry->dir    = dir->i_ino;
173                 __entry->mode   = mode;
174         ),
175
176         TP_printk("dev %d,%d ino %lu dir %lu mode 0%o",
177                   MAJOR(__entry->dev), MINOR(__entry->dev),
178                   (unsigned long) __entry->ino,
179                   (unsigned long) __entry->dir, __entry->mode)
180 );
181
182 TRACE_EVENT(ext4_evict_inode,
183         TP_PROTO(struct inode *inode),
184
185         TP_ARGS(inode),
186
187         TP_STRUCT__entry(
188                 __field(        dev_t,  dev                     )
189                 __field(        ino_t,  ino                     )
190                 __field(        int,    nlink                   )
191         ),
192
193         TP_fast_assign(
194                 __entry->dev    = inode->i_sb->s_dev;
195                 __entry->ino    = inode->i_ino;
196                 __entry->nlink  = inode->i_nlink;
197         ),
198
199         TP_printk("dev %d,%d ino %lu nlink %d",
200                   MAJOR(__entry->dev), MINOR(__entry->dev),
201                   (unsigned long) __entry->ino, __entry->nlink)
202 );
203
204 TRACE_EVENT(ext4_drop_inode,
205         TP_PROTO(struct inode *inode, int drop),
206
207         TP_ARGS(inode, drop),
208
209         TP_STRUCT__entry(
210                 __field(        dev_t,  dev                     )
211                 __field(        ino_t,  ino                     )
212                 __field(        int,    drop                    )
213         ),
214
215         TP_fast_assign(
216                 __entry->dev    = inode->i_sb->s_dev;
217                 __entry->ino    = inode->i_ino;
218                 __entry->drop   = drop;
219         ),
220
221         TP_printk("dev %d,%d ino %lu drop %d",
222                   MAJOR(__entry->dev), MINOR(__entry->dev),
223                   (unsigned long) __entry->ino, __entry->drop)
224 );
225
226 TRACE_EVENT(ext4_nfs_commit_metadata,
227         TP_PROTO(struct inode *inode),
228
229         TP_ARGS(inode),
230
231         TP_STRUCT__entry(
232                 __field(        dev_t,  dev                     )
233                 __field(        ino_t,  ino                     )
234         ),
235
236         TP_fast_assign(
237                 __entry->dev    = inode->i_sb->s_dev;
238                 __entry->ino    = inode->i_ino;
239         ),
240
241         TP_printk("dev %d,%d ino %lu",
242                   MAJOR(__entry->dev), MINOR(__entry->dev),
243                   (unsigned long) __entry->ino)
244 );
245
246 TRACE_EVENT(ext4_mark_inode_dirty,
247         TP_PROTO(struct inode *inode, unsigned long IP),
248
249         TP_ARGS(inode, IP),
250
251         TP_STRUCT__entry(
252                 __field(        dev_t,  dev                     )
253                 __field(        ino_t,  ino                     )
254                 __field(unsigned long,  ip                      )
255         ),
256
257         TP_fast_assign(
258                 __entry->dev    = inode->i_sb->s_dev;
259                 __entry->ino    = inode->i_ino;
260                 __entry->ip     = IP;
261         ),
262
263         TP_printk("dev %d,%d ino %lu caller %pS",
264                   MAJOR(__entry->dev), MINOR(__entry->dev),
265                   (unsigned long) __entry->ino, (void *)__entry->ip)
266 );
267
268 TRACE_EVENT(ext4_begin_ordered_truncate,
269         TP_PROTO(struct inode *inode, loff_t new_size),
270
271         TP_ARGS(inode, new_size),
272
273         TP_STRUCT__entry(
274                 __field(        dev_t,  dev                     )
275                 __field(        ino_t,  ino                     )
276                 __field(        loff_t, new_size                )
277         ),
278
279         TP_fast_assign(
280                 __entry->dev            = inode->i_sb->s_dev;
281                 __entry->ino            = inode->i_ino;
282                 __entry->new_size       = new_size;
283         ),
284
285         TP_printk("dev %d,%d ino %lu new_size %lld",
286                   MAJOR(__entry->dev), MINOR(__entry->dev),
287                   (unsigned long) __entry->ino,
288                   __entry->new_size)
289 );
290
291 DECLARE_EVENT_CLASS(ext4__write_begin,
292
293         TP_PROTO(struct inode *inode, loff_t pos, unsigned int len,
294                  unsigned int flags),
295
296         TP_ARGS(inode, pos, len, flags),
297
298         TP_STRUCT__entry(
299                 __field(        dev_t,  dev                     )
300                 __field(        ino_t,  ino                     )
301                 __field(        loff_t, pos                     )
302                 __field(        unsigned int, len               )
303                 __field(        unsigned int, flags             )
304         ),
305
306         TP_fast_assign(
307                 __entry->dev    = inode->i_sb->s_dev;
308                 __entry->ino    = inode->i_ino;
309                 __entry->pos    = pos;
310                 __entry->len    = len;
311                 __entry->flags  = flags;
312         ),
313
314         TP_printk("dev %d,%d ino %lu pos %lld len %u flags %u",
315                   MAJOR(__entry->dev), MINOR(__entry->dev),
316                   (unsigned long) __entry->ino,
317                   __entry->pos, __entry->len, __entry->flags)
318 );
319
320 DEFINE_EVENT(ext4__write_begin, ext4_write_begin,
321
322         TP_PROTO(struct inode *inode, loff_t pos, unsigned int len,
323                  unsigned int flags),
324
325         TP_ARGS(inode, pos, len, flags)
326 );
327
328 DEFINE_EVENT(ext4__write_begin, ext4_da_write_begin,
329
330         TP_PROTO(struct inode *inode, loff_t pos, unsigned int len,
331                  unsigned int flags),
332
333         TP_ARGS(inode, pos, len, flags)
334 );
335
336 DECLARE_EVENT_CLASS(ext4__write_end,
337         TP_PROTO(struct inode *inode, loff_t pos, unsigned int len,
338                         unsigned int copied),
339
340         TP_ARGS(inode, pos, len, copied),
341
342         TP_STRUCT__entry(
343                 __field(        dev_t,  dev                     )
344                 __field(        ino_t,  ino                     )
345                 __field(        loff_t, pos                     )
346                 __field(        unsigned int, len               )
347                 __field(        unsigned int, copied            )
348         ),
349
350         TP_fast_assign(
351                 __entry->dev    = inode->i_sb->s_dev;
352                 __entry->ino    = inode->i_ino;
353                 __entry->pos    = pos;
354                 __entry->len    = len;
355                 __entry->copied = copied;
356         ),
357
358         TP_printk("dev %d,%d ino %lu pos %lld len %u copied %u",
359                   MAJOR(__entry->dev), MINOR(__entry->dev),
360                   (unsigned long) __entry->ino,
361                   __entry->pos, __entry->len, __entry->copied)
362 );
363
364 DEFINE_EVENT(ext4__write_end, ext4_write_end,
365
366         TP_PROTO(struct inode *inode, loff_t pos, unsigned int len,
367                  unsigned int copied),
368
369         TP_ARGS(inode, pos, len, copied)
370 );
371
372 DEFINE_EVENT(ext4__write_end, ext4_journalled_write_end,
373
374         TP_PROTO(struct inode *inode, loff_t pos, unsigned int len,
375                  unsigned int copied),
376
377         TP_ARGS(inode, pos, len, copied)
378 );
379
380 DEFINE_EVENT(ext4__write_end, ext4_da_write_end,
381
382         TP_PROTO(struct inode *inode, loff_t pos, unsigned int len,
383                  unsigned int copied),
384
385         TP_ARGS(inode, pos, len, copied)
386 );
387
388 TRACE_EVENT(ext4_writepages,
389         TP_PROTO(struct inode *inode, struct writeback_control *wbc),
390
391         TP_ARGS(inode, wbc),
392
393         TP_STRUCT__entry(
394                 __field(        dev_t,  dev                     )
395                 __field(        ino_t,  ino                     )
396                 __field(        long,   nr_to_write             )
397                 __field(        long,   pages_skipped           )
398                 __field(        loff_t, range_start             )
399                 __field(        loff_t, range_end               )
400                 __field(       pgoff_t, writeback_index         )
401                 __field(        int,    sync_mode               )
402                 __field(        char,   for_kupdate             )
403                 __field(        char,   range_cyclic            )
404         ),
405
406         TP_fast_assign(
407                 __entry->dev            = inode->i_sb->s_dev;
408                 __entry->ino            = inode->i_ino;
409                 __entry->nr_to_write    = wbc->nr_to_write;
410                 __entry->pages_skipped  = wbc->pages_skipped;
411                 __entry->range_start    = wbc->range_start;
412                 __entry->range_end      = wbc->range_end;
413                 __entry->writeback_index = inode->i_mapping->writeback_index;
414                 __entry->sync_mode      = wbc->sync_mode;
415                 __entry->for_kupdate    = wbc->for_kupdate;
416                 __entry->range_cyclic   = wbc->range_cyclic;
417         ),
418
419         TP_printk("dev %d,%d ino %lu nr_to_write %ld pages_skipped %ld "
420                   "range_start %lld range_end %lld sync_mode %d "
421                   "for_kupdate %d range_cyclic %d writeback_index %lu",
422                   MAJOR(__entry->dev), MINOR(__entry->dev),
423                   (unsigned long) __entry->ino, __entry->nr_to_write,
424                   __entry->pages_skipped, __entry->range_start,
425                   __entry->range_end, __entry->sync_mode,
426                   __entry->for_kupdate, __entry->range_cyclic,
427                   (unsigned long) __entry->writeback_index)
428 );
429
430 TRACE_EVENT(ext4_da_write_pages,
431         TP_PROTO(struct inode *inode, pgoff_t first_page,
432                  struct writeback_control *wbc),
433
434         TP_ARGS(inode, first_page, wbc),
435
436         TP_STRUCT__entry(
437                 __field(        dev_t,  dev                     )
438                 __field(        ino_t,  ino                     )
439                 __field(      pgoff_t,  first_page              )
440                 __field(         long,  nr_to_write             )
441                 __field(          int,  sync_mode               )
442         ),
443
444         TP_fast_assign(
445                 __entry->dev            = inode->i_sb->s_dev;
446                 __entry->ino            = inode->i_ino;
447                 __entry->first_page     = first_page;
448                 __entry->nr_to_write    = wbc->nr_to_write;
449                 __entry->sync_mode      = wbc->sync_mode;
450         ),
451
452         TP_printk("dev %d,%d ino %lu first_page %lu nr_to_write %ld "
453                   "sync_mode %d",
454                   MAJOR(__entry->dev), MINOR(__entry->dev),
455                   (unsigned long) __entry->ino, __entry->first_page,
456                   __entry->nr_to_write, __entry->sync_mode)
457 );
458
459 TRACE_EVENT(ext4_da_write_pages_extent,
460         TP_PROTO(struct inode *inode, struct ext4_map_blocks *map),
461
462         TP_ARGS(inode, map),
463
464         TP_STRUCT__entry(
465                 __field(        dev_t,  dev                     )
466                 __field(        ino_t,  ino                     )
467                 __field(        __u64,  lblk                    )
468                 __field(        __u32,  len                     )
469                 __field(        __u32,  flags                   )
470         ),
471
472         TP_fast_assign(
473                 __entry->dev            = inode->i_sb->s_dev;
474                 __entry->ino            = inode->i_ino;
475                 __entry->lblk           = map->m_lblk;
476                 __entry->len            = map->m_len;
477                 __entry->flags          = map->m_flags;
478         ),
479
480         TP_printk("dev %d,%d ino %lu lblk %llu len %u flags %s",
481                   MAJOR(__entry->dev), MINOR(__entry->dev),
482                   (unsigned long) __entry->ino, __entry->lblk, __entry->len,
483                   show_mflags(__entry->flags))
484 );
485
486 TRACE_EVENT(ext4_writepages_result,
487         TP_PROTO(struct inode *inode, struct writeback_control *wbc,
488                         int ret, int pages_written),
489
490         TP_ARGS(inode, wbc, ret, pages_written),
491
492         TP_STRUCT__entry(
493                 __field(        dev_t,  dev                     )
494                 __field(        ino_t,  ino                     )
495                 __field(        int,    ret                     )
496                 __field(        int,    pages_written           )
497                 __field(        long,   pages_skipped           )
498                 __field(       pgoff_t, writeback_index         )
499                 __field(        int,    sync_mode               )
500         ),
501
502         TP_fast_assign(
503                 __entry->dev            = inode->i_sb->s_dev;
504                 __entry->ino            = inode->i_ino;
505                 __entry->ret            = ret;
506                 __entry->pages_written  = pages_written;
507                 __entry->pages_skipped  = wbc->pages_skipped;
508                 __entry->writeback_index = inode->i_mapping->writeback_index;
509                 __entry->sync_mode      = wbc->sync_mode;
510         ),
511
512         TP_printk("dev %d,%d ino %lu ret %d pages_written %d pages_skipped %ld "
513                   "sync_mode %d writeback_index %lu",
514                   MAJOR(__entry->dev), MINOR(__entry->dev),
515                   (unsigned long) __entry->ino, __entry->ret,
516                   __entry->pages_written, __entry->pages_skipped,
517                   __entry->sync_mode,
518                   (unsigned long) __entry->writeback_index)
519 );
520
521 DECLARE_EVENT_CLASS(ext4__page_op,
522         TP_PROTO(struct page *page),
523
524         TP_ARGS(page),
525
526         TP_STRUCT__entry(
527                 __field(        dev_t,  dev                     )
528                 __field(        ino_t,  ino                     )
529                 __field(        pgoff_t, index                  )
530
531         ),
532
533         TP_fast_assign(
534                 __entry->dev    = page->mapping->host->i_sb->s_dev;
535                 __entry->ino    = page->mapping->host->i_ino;
536                 __entry->index  = page->index;
537         ),
538
539         TP_printk("dev %d,%d ino %lu page_index %lu",
540                   MAJOR(__entry->dev), MINOR(__entry->dev),
541                   (unsigned long) __entry->ino,
542                   (unsigned long) __entry->index)
543 );
544
545 DEFINE_EVENT(ext4__page_op, ext4_writepage,
546
547         TP_PROTO(struct page *page),
548
549         TP_ARGS(page)
550 );
551
552 DEFINE_EVENT(ext4__page_op, ext4_readpage,
553
554         TP_PROTO(struct page *page),
555
556         TP_ARGS(page)
557 );
558
559 DEFINE_EVENT(ext4__page_op, ext4_releasepage,
560
561         TP_PROTO(struct page *page),
562
563         TP_ARGS(page)
564 );
565
566 DECLARE_EVENT_CLASS(ext4_invalidatepage_op,
567         TP_PROTO(struct page *page, unsigned int offset, unsigned int length),
568
569         TP_ARGS(page, offset, length),
570
571         TP_STRUCT__entry(
572                 __field(        dev_t,  dev                     )
573                 __field(        ino_t,  ino                     )
574                 __field(        pgoff_t, index                  )
575                 __field(        unsigned int, offset            )
576                 __field(        unsigned int, length            )
577         ),
578
579         TP_fast_assign(
580                 __entry->dev    = page->mapping->host->i_sb->s_dev;
581                 __entry->ino    = page->mapping->host->i_ino;
582                 __entry->index  = page->index;
583                 __entry->offset = offset;
584                 __entry->length = length;
585         ),
586
587         TP_printk("dev %d,%d ino %lu page_index %lu offset %u length %u",
588                   MAJOR(__entry->dev), MINOR(__entry->dev),
589                   (unsigned long) __entry->ino,
590                   (unsigned long) __entry->index,
591                   __entry->offset, __entry->length)
592 );
593
594 DEFINE_EVENT(ext4_invalidatepage_op, ext4_invalidatepage,
595         TP_PROTO(struct page *page, unsigned int offset, unsigned int length),
596
597         TP_ARGS(page, offset, length)
598 );
599
600 DEFINE_EVENT(ext4_invalidatepage_op, ext4_journalled_invalidatepage,
601         TP_PROTO(struct page *page, unsigned int offset, unsigned int length),
602
603         TP_ARGS(page, offset, length)
604 );
605
606 TRACE_EVENT(ext4_discard_blocks,
607         TP_PROTO(struct super_block *sb, unsigned long long blk,
608                         unsigned long long count),
609
610         TP_ARGS(sb, blk, count),
611
612         TP_STRUCT__entry(
613                 __field(        dev_t,  dev                     )
614                 __field(        __u64,  blk                     )
615                 __field(        __u64,  count                   )
616
617         ),
618
619         TP_fast_assign(
620                 __entry->dev    = sb->s_dev;
621                 __entry->blk    = blk;
622                 __entry->count  = count;
623         ),
624
625         TP_printk("dev %d,%d blk %llu count %llu",
626                   MAJOR(__entry->dev), MINOR(__entry->dev),
627                   __entry->blk, __entry->count)
628 );
629
630 DECLARE_EVENT_CLASS(ext4__mb_new_pa,
631         TP_PROTO(struct ext4_allocation_context *ac,
632                  struct ext4_prealloc_space *pa),
633
634         TP_ARGS(ac, pa),
635
636         TP_STRUCT__entry(
637                 __field(        dev_t,  dev                     )
638                 __field(        ino_t,  ino                     )
639                 __field(        __u64,  pa_pstart               )
640                 __field(        __u64,  pa_lstart               )
641                 __field(        __u32,  pa_len                  )
642
643         ),
644
645         TP_fast_assign(
646                 __entry->dev            = ac->ac_sb->s_dev;
647                 __entry->ino            = ac->ac_inode->i_ino;
648                 __entry->pa_pstart      = pa->pa_pstart;
649                 __entry->pa_lstart      = pa->pa_lstart;
650                 __entry->pa_len         = pa->pa_len;
651         ),
652
653         TP_printk("dev %d,%d ino %lu pstart %llu len %u lstart %llu",
654                   MAJOR(__entry->dev), MINOR(__entry->dev),
655                   (unsigned long) __entry->ino,
656                   __entry->pa_pstart, __entry->pa_len, __entry->pa_lstart)
657 );
658
659 DEFINE_EVENT(ext4__mb_new_pa, ext4_mb_new_inode_pa,
660
661         TP_PROTO(struct ext4_allocation_context *ac,
662                  struct ext4_prealloc_space *pa),
663
664         TP_ARGS(ac, pa)
665 );
666
667 DEFINE_EVENT(ext4__mb_new_pa, ext4_mb_new_group_pa,
668
669         TP_PROTO(struct ext4_allocation_context *ac,
670                  struct ext4_prealloc_space *pa),
671
672         TP_ARGS(ac, pa)
673 );
674
675 TRACE_EVENT(ext4_mb_release_inode_pa,
676         TP_PROTO(struct ext4_prealloc_space *pa,
677                  unsigned long long block, unsigned int count),
678
679         TP_ARGS(pa, block, count),
680
681         TP_STRUCT__entry(
682                 __field(        dev_t,  dev                     )
683                 __field(        ino_t,  ino                     )
684                 __field(        __u64,  block                   )
685                 __field(        __u32,  count                   )
686
687         ),
688
689         TP_fast_assign(
690                 __entry->dev            = pa->pa_inode->i_sb->s_dev;
691                 __entry->ino            = pa->pa_inode->i_ino;
692                 __entry->block          = block;
693                 __entry->count          = count;
694         ),
695
696         TP_printk("dev %d,%d ino %lu block %llu count %u",
697                   MAJOR(__entry->dev), MINOR(__entry->dev),
698                   (unsigned long) __entry->ino,
699                   __entry->block, __entry->count)
700 );
701
702 TRACE_EVENT(ext4_mb_release_group_pa,
703         TP_PROTO(struct super_block *sb, struct ext4_prealloc_space *pa),
704
705         TP_ARGS(sb, pa),
706
707         TP_STRUCT__entry(
708                 __field(        dev_t,  dev                     )
709                 __field(        __u64,  pa_pstart               )
710                 __field(        __u32,  pa_len                  )
711
712         ),
713
714         TP_fast_assign(
715                 __entry->dev            = sb->s_dev;
716                 __entry->pa_pstart      = pa->pa_pstart;
717                 __entry->pa_len         = pa->pa_len;
718         ),
719
720         TP_printk("dev %d,%d pstart %llu len %u",
721                   MAJOR(__entry->dev), MINOR(__entry->dev),
722                   __entry->pa_pstart, __entry->pa_len)
723 );
724
725 TRACE_EVENT(ext4_discard_preallocations,
726         TP_PROTO(struct inode *inode),
727
728         TP_ARGS(inode),
729
730         TP_STRUCT__entry(
731                 __field(        dev_t,  dev                     )
732                 __field(        ino_t,  ino                     )
733
734         ),
735
736         TP_fast_assign(
737                 __entry->dev    = inode->i_sb->s_dev;
738                 __entry->ino    = inode->i_ino;
739         ),
740
741         TP_printk("dev %d,%d ino %lu",
742                   MAJOR(__entry->dev), MINOR(__entry->dev),
743                   (unsigned long) __entry->ino)
744 );
745
746 TRACE_EVENT(ext4_mb_discard_preallocations,
747         TP_PROTO(struct super_block *sb, int needed),
748
749         TP_ARGS(sb, needed),
750
751         TP_STRUCT__entry(
752                 __field(        dev_t,  dev                     )
753                 __field(        int,    needed                  )
754
755         ),
756
757         TP_fast_assign(
758                 __entry->dev    = sb->s_dev;
759                 __entry->needed = needed;
760         ),
761
762         TP_printk("dev %d,%d needed %d",
763                   MAJOR(__entry->dev), MINOR(__entry->dev),
764                   __entry->needed)
765 );
766
767 TRACE_EVENT(ext4_request_blocks,
768         TP_PROTO(struct ext4_allocation_request *ar),
769
770         TP_ARGS(ar),
771
772         TP_STRUCT__entry(
773                 __field(        dev_t,  dev                     )
774                 __field(        ino_t,  ino                     )
775                 __field(        unsigned int, len               )
776                 __field(        __u32,  logical                 )
777                 __field(        __u32,  lleft                   )
778                 __field(        __u32,  lright                  )
779                 __field(        __u64,  goal                    )
780                 __field(        __u64,  pleft                   )
781                 __field(        __u64,  pright                  )
782                 __field(        unsigned int, flags             )
783         ),
784
785         TP_fast_assign(
786                 __entry->dev    = ar->inode->i_sb->s_dev;
787                 __entry->ino    = ar->inode->i_ino;
788                 __entry->len    = ar->len;
789                 __entry->logical = ar->logical;
790                 __entry->goal   = ar->goal;
791                 __entry->lleft  = ar->lleft;
792                 __entry->lright = ar->lright;
793                 __entry->pleft  = ar->pleft;
794                 __entry->pright = ar->pright;
795                 __entry->flags  = ar->flags;
796         ),
797
798         TP_printk("dev %d,%d ino %lu flags %s len %u lblk %u goal %llu "
799                   "lleft %u lright %u pleft %llu pright %llu ",
800                   MAJOR(__entry->dev), MINOR(__entry->dev),
801                   (unsigned long) __entry->ino, show_mballoc_flags(__entry->flags),
802                   __entry->len, __entry->logical, __entry->goal,
803                   __entry->lleft, __entry->lright, __entry->pleft,
804                   __entry->pright)
805 );
806
807 TRACE_EVENT(ext4_allocate_blocks,
808         TP_PROTO(struct ext4_allocation_request *ar, unsigned long long block),
809
810         TP_ARGS(ar, block),
811
812         TP_STRUCT__entry(
813                 __field(        dev_t,  dev                     )
814                 __field(        ino_t,  ino                     )
815                 __field(        __u64,  block                   )
816                 __field(        unsigned int, len               )
817                 __field(        __u32,  logical                 )
818                 __field(        __u32,  lleft                   )
819                 __field(        __u32,  lright                  )
820                 __field(        __u64,  goal                    )
821                 __field(        __u64,  pleft                   )
822                 __field(        __u64,  pright                  )
823                 __field(        unsigned int, flags             )
824         ),
825
826         TP_fast_assign(
827                 __entry->dev    = ar->inode->i_sb->s_dev;
828                 __entry->ino    = ar->inode->i_ino;
829                 __entry->block  = block;
830                 __entry->len    = ar->len;
831                 __entry->logical = ar->logical;
832                 __entry->goal   = ar->goal;
833                 __entry->lleft  = ar->lleft;
834                 __entry->lright = ar->lright;
835                 __entry->pleft  = ar->pleft;
836                 __entry->pright = ar->pright;
837                 __entry->flags  = ar->flags;
838         ),
839
840         TP_printk("dev %d,%d ino %lu flags %s len %u block %llu lblk %u "
841                   "goal %llu lleft %u lright %u pleft %llu pright %llu",
842                   MAJOR(__entry->dev), MINOR(__entry->dev),
843                   (unsigned long) __entry->ino, show_mballoc_flags(__entry->flags),
844                   __entry->len, __entry->block, __entry->logical,
845                   __entry->goal,  __entry->lleft, __entry->lright,
846                   __entry->pleft, __entry->pright)
847 );
848
849 TRACE_EVENT(ext4_free_blocks,
850         TP_PROTO(struct inode *inode, __u64 block, unsigned long count,
851                  int flags),
852
853         TP_ARGS(inode, block, count, flags),
854
855         TP_STRUCT__entry(
856                 __field(        dev_t,  dev                     )
857                 __field(        ino_t,  ino                     )
858                 __field(        __u64,  block                   )
859                 __field(        unsigned long,  count           )
860                 __field(        int,    flags                   )
861                 __field(        __u16,  mode                    )
862         ),
863
864         TP_fast_assign(
865                 __entry->dev            = inode->i_sb->s_dev;
866                 __entry->ino            = inode->i_ino;
867                 __entry->block          = block;
868                 __entry->count          = count;
869                 __entry->flags          = flags;
870                 __entry->mode           = inode->i_mode;
871         ),
872
873         TP_printk("dev %d,%d ino %lu mode 0%o block %llu count %lu flags %s",
874                   MAJOR(__entry->dev), MINOR(__entry->dev),
875                   (unsigned long) __entry->ino,
876                   __entry->mode, __entry->block, __entry->count,
877                   show_free_flags(__entry->flags))
878 );
879
880 TRACE_EVENT(ext4_sync_file_enter,
881         TP_PROTO(struct file *file, int datasync),
882
883         TP_ARGS(file, datasync),
884
885         TP_STRUCT__entry(
886                 __field(        dev_t,  dev                     )
887                 __field(        ino_t,  ino                     )
888                 __field(        ino_t,  parent                  )
889                 __field(        int,    datasync                )
890         ),
891
892         TP_fast_assign(
893                 struct dentry *dentry = file->f_path.dentry;
894
895                 __entry->dev            = dentry->d_sb->s_dev;
896                 __entry->ino            = d_inode(dentry)->i_ino;
897                 __entry->datasync       = datasync;
898                 __entry->parent         = d_inode(dentry->d_parent)->i_ino;
899         ),
900
901         TP_printk("dev %d,%d ino %lu parent %lu datasync %d ",
902                   MAJOR(__entry->dev), MINOR(__entry->dev),
903                   (unsigned long) __entry->ino,
904                   (unsigned long) __entry->parent, __entry->datasync)
905 );
906
907 TRACE_EVENT(ext4_sync_file_exit,
908         TP_PROTO(struct inode *inode, int ret),
909
910         TP_ARGS(inode, ret),
911
912         TP_STRUCT__entry(
913                 __field(        dev_t,  dev                     )
914                 __field(        ino_t,  ino                     )
915                 __field(        int,    ret                     )
916         ),
917
918         TP_fast_assign(
919                 __entry->dev            = inode->i_sb->s_dev;
920                 __entry->ino            = inode->i_ino;
921                 __entry->ret            = ret;
922         ),
923
924         TP_printk("dev %d,%d ino %lu ret %d",
925                   MAJOR(__entry->dev), MINOR(__entry->dev),
926                   (unsigned long) __entry->ino,
927                   __entry->ret)
928 );
929
930 TRACE_EVENT(ext4_sync_fs,
931         TP_PROTO(struct super_block *sb, int wait),
932
933         TP_ARGS(sb, wait),
934
935         TP_STRUCT__entry(
936                 __field(        dev_t,  dev                     )
937                 __field(        int,    wait                    )
938
939         ),
940
941         TP_fast_assign(
942                 __entry->dev    = sb->s_dev;
943                 __entry->wait   = wait;
944         ),
945
946         TP_printk("dev %d,%d wait %d",
947                   MAJOR(__entry->dev), MINOR(__entry->dev),
948                   __entry->wait)
949 );
950
951 TRACE_EVENT(ext4_alloc_da_blocks,
952         TP_PROTO(struct inode *inode),
953
954         TP_ARGS(inode),
955
956         TP_STRUCT__entry(
957                 __field(        dev_t,  dev                     )
958                 __field(        ino_t,  ino                     )
959                 __field( unsigned int,  data_blocks     )
960                 __field( unsigned int,  meta_blocks     )
961         ),
962
963         TP_fast_assign(
964                 __entry->dev    = inode->i_sb->s_dev;
965                 __entry->ino    = inode->i_ino;
966                 __entry->data_blocks = EXT4_I(inode)->i_reserved_data_blocks;
967                 __entry->meta_blocks = EXT4_I(inode)->i_reserved_meta_blocks;
968         ),
969
970         TP_printk("dev %d,%d ino %lu data_blocks %u meta_blocks %u",
971                   MAJOR(__entry->dev), MINOR(__entry->dev),
972                   (unsigned long) __entry->ino,
973                   __entry->data_blocks, __entry->meta_blocks)
974 );
975
976 TRACE_EVENT(ext4_mballoc_alloc,
977         TP_PROTO(struct ext4_allocation_context *ac),
978
979         TP_ARGS(ac),
980
981         TP_STRUCT__entry(
982                 __field(        dev_t,  dev                     )
983                 __field(        ino_t,  ino                     )
984                 __field(        __u32,  orig_logical            )
985                 __field(          int,  orig_start              )
986                 __field(        __u32,  orig_group              )
987                 __field(          int,  orig_len                )
988                 __field(        __u32,  goal_logical            )
989                 __field(          int,  goal_start              )
990                 __field(        __u32,  goal_group              )
991                 __field(          int,  goal_len                )
992                 __field(        __u32,  result_logical          )
993                 __field(          int,  result_start            )
994                 __field(        __u32,  result_group            )
995                 __field(          int,  result_len              )
996                 __field(        __u16,  found                   )
997                 __field(        __u16,  groups                  )
998                 __field(        __u16,  buddy                   )
999                 __field(        __u16,  flags                   )
1000                 __field(        __u16,  tail                    )
1001                 __field(        __u8,   cr                      )
1002         ),
1003
1004         TP_fast_assign(
1005                 __entry->dev            = ac->ac_inode->i_sb->s_dev;
1006                 __entry->ino            = ac->ac_inode->i_ino;
1007                 __entry->orig_logical   = ac->ac_o_ex.fe_logical;
1008                 __entry->orig_start     = ac->ac_o_ex.fe_start;
1009                 __entry->orig_group     = ac->ac_o_ex.fe_group;
1010                 __entry->orig_len       = ac->ac_o_ex.fe_len;
1011                 __entry->goal_logical   = ac->ac_g_ex.fe_logical;
1012                 __entry->goal_start     = ac->ac_g_ex.fe_start;
1013                 __entry->goal_group     = ac->ac_g_ex.fe_group;
1014                 __entry->goal_len       = ac->ac_g_ex.fe_len;
1015                 __entry->result_logical = ac->ac_f_ex.fe_logical;
1016                 __entry->result_start   = ac->ac_f_ex.fe_start;
1017                 __entry->result_group   = ac->ac_f_ex.fe_group;
1018                 __entry->result_len     = ac->ac_f_ex.fe_len;
1019                 __entry->found          = ac->ac_found;
1020                 __entry->flags          = ac->ac_flags;
1021                 __entry->groups         = ac->ac_groups_scanned;
1022                 __entry->buddy          = ac->ac_buddy;
1023                 __entry->tail           = ac->ac_tail;
1024                 __entry->cr             = ac->ac_criteria;
1025         ),
1026
1027         TP_printk("dev %d,%d inode %lu orig %u/%d/%u@%u goal %u/%d/%u@%u "
1028                   "result %u/%d/%u@%u blks %u grps %u cr %u flags %s "
1029                   "tail %u broken %u",
1030                   MAJOR(__entry->dev), MINOR(__entry->dev),
1031                   (unsigned long) __entry->ino,
1032                   __entry->orig_group, __entry->orig_start,
1033                   __entry->orig_len, __entry->orig_logical,
1034                   __entry->goal_group, __entry->goal_start,
1035                   __entry->goal_len, __entry->goal_logical,
1036                   __entry->result_group, __entry->result_start,
1037                   __entry->result_len, __entry->result_logical,
1038                   __entry->found, __entry->groups, __entry->cr,
1039                   show_mballoc_flags(__entry->flags), __entry->tail,
1040                   __entry->buddy ? 1 << __entry->buddy : 0)
1041 );
1042
1043 TRACE_EVENT(ext4_mballoc_prealloc,
1044         TP_PROTO(struct ext4_allocation_context *ac),
1045
1046         TP_ARGS(ac),
1047
1048         TP_STRUCT__entry(
1049                 __field(        dev_t,  dev                     )
1050                 __field(        ino_t,  ino                     )
1051                 __field(        __u32,  orig_logical            )
1052                 __field(          int,  orig_start              )
1053                 __field(        __u32,  orig_group              )
1054                 __field(          int,  orig_len                )
1055                 __field(        __u32,  result_logical          )
1056                 __field(          int,  result_start            )
1057                 __field(        __u32,  result_group            )
1058                 __field(          int,  result_len              )
1059         ),
1060
1061         TP_fast_assign(
1062                 __entry->dev            = ac->ac_inode->i_sb->s_dev;
1063                 __entry->ino            = ac->ac_inode->i_ino;
1064                 __entry->orig_logical   = ac->ac_o_ex.fe_logical;
1065                 __entry->orig_start     = ac->ac_o_ex.fe_start;
1066                 __entry->orig_group     = ac->ac_o_ex.fe_group;
1067                 __entry->orig_len       = ac->ac_o_ex.fe_len;
1068                 __entry->result_logical = ac->ac_b_ex.fe_logical;
1069                 __entry->result_start   = ac->ac_b_ex.fe_start;
1070                 __entry->result_group   = ac->ac_b_ex.fe_group;
1071                 __entry->result_len     = ac->ac_b_ex.fe_len;
1072         ),
1073
1074         TP_printk("dev %d,%d inode %lu orig %u/%d/%u@%u result %u/%d/%u@%u",
1075                   MAJOR(__entry->dev), MINOR(__entry->dev),
1076                   (unsigned long) __entry->ino,
1077                   __entry->orig_group, __entry->orig_start,
1078                   __entry->orig_len, __entry->orig_logical,
1079                   __entry->result_group, __entry->result_start,
1080                   __entry->result_len, __entry->result_logical)
1081 );
1082
1083 DECLARE_EVENT_CLASS(ext4__mballoc,
1084         TP_PROTO(struct super_block *sb,
1085                  struct inode *inode,
1086                  ext4_group_t group,
1087                  ext4_grpblk_t start,
1088                  ext4_grpblk_t len),
1089
1090         TP_ARGS(sb, inode, group, start, len),
1091
1092         TP_STRUCT__entry(
1093                 __field(        dev_t,  dev                     )
1094                 __field(        ino_t,  ino                     )
1095                 __field(          int,  result_start            )
1096                 __field(        __u32,  result_group            )
1097                 __field(          int,  result_len              )
1098         ),
1099
1100         TP_fast_assign(
1101                 __entry->dev            = sb->s_dev;
1102                 __entry->ino            = inode ? inode->i_ino : 0;
1103                 __entry->result_start   = start;
1104                 __entry->result_group   = group;
1105                 __entry->result_len     = len;
1106         ),
1107
1108         TP_printk("dev %d,%d inode %lu extent %u/%d/%d ",
1109                   MAJOR(__entry->dev), MINOR(__entry->dev),
1110                   (unsigned long) __entry->ino,
1111                   __entry->result_group, __entry->result_start,
1112                   __entry->result_len)
1113 );
1114
1115 DEFINE_EVENT(ext4__mballoc, ext4_mballoc_discard,
1116
1117         TP_PROTO(struct super_block *sb,
1118                  struct inode *inode,
1119                  ext4_group_t group,
1120                  ext4_grpblk_t start,
1121                  ext4_grpblk_t len),
1122
1123         TP_ARGS(sb, inode, group, start, len)
1124 );
1125
1126 DEFINE_EVENT(ext4__mballoc, ext4_mballoc_free,
1127
1128         TP_PROTO(struct super_block *sb,
1129                  struct inode *inode,
1130                  ext4_group_t group,
1131                  ext4_grpblk_t start,
1132                  ext4_grpblk_t len),
1133
1134         TP_ARGS(sb, inode, group, start, len)
1135 );
1136
1137 TRACE_EVENT(ext4_forget,
1138         TP_PROTO(struct inode *inode, int is_metadata, __u64 block),
1139
1140         TP_ARGS(inode, is_metadata, block),
1141
1142         TP_STRUCT__entry(
1143                 __field(        dev_t,  dev                     )
1144                 __field(        ino_t,  ino                     )
1145                 __field(        __u64,  block                   )
1146                 __field(        int,    is_metadata             )
1147                 __field(        __u16,  mode                    )
1148         ),
1149
1150         TP_fast_assign(
1151                 __entry->dev    = inode->i_sb->s_dev;
1152                 __entry->ino    = inode->i_ino;
1153                 __entry->block  = block;
1154                 __entry->is_metadata = is_metadata;
1155                 __entry->mode   = inode->i_mode;
1156         ),
1157
1158         TP_printk("dev %d,%d ino %lu mode 0%o is_metadata %d block %llu",
1159                   MAJOR(__entry->dev), MINOR(__entry->dev),
1160                   (unsigned long) __entry->ino,
1161                   __entry->mode, __entry->is_metadata, __entry->block)
1162 );
1163
1164 TRACE_EVENT(ext4_da_update_reserve_space,
1165         TP_PROTO(struct inode *inode, int used_blocks, int quota_claim),
1166
1167         TP_ARGS(inode, used_blocks, quota_claim),
1168
1169         TP_STRUCT__entry(
1170                 __field(        dev_t,  dev                     )
1171                 __field(        ino_t,  ino                     )
1172                 __field(        __u64,  i_blocks                )
1173                 __field(        int,    used_blocks             )
1174                 __field(        int,    reserved_data_blocks    )
1175                 __field(        int,    reserved_meta_blocks    )
1176                 __field(        int,    allocated_meta_blocks   )
1177                 __field(        int,    quota_claim             )
1178                 __field(        __u16,  mode                    )
1179         ),
1180
1181         TP_fast_assign(
1182                 __entry->dev    = inode->i_sb->s_dev;
1183                 __entry->ino    = inode->i_ino;
1184                 __entry->i_blocks = inode->i_blocks;
1185                 __entry->used_blocks = used_blocks;
1186                 __entry->reserved_data_blocks =
1187                                 EXT4_I(inode)->i_reserved_data_blocks;
1188                 __entry->reserved_meta_blocks =
1189                                 EXT4_I(inode)->i_reserved_meta_blocks;
1190                 __entry->allocated_meta_blocks =
1191                                 EXT4_I(inode)->i_allocated_meta_blocks;
1192                 __entry->quota_claim = quota_claim;
1193                 __entry->mode   = inode->i_mode;
1194         ),
1195
1196         TP_printk("dev %d,%d ino %lu mode 0%o i_blocks %llu used_blocks %d "
1197                   "reserved_data_blocks %d reserved_meta_blocks %d "
1198                   "allocated_meta_blocks %d quota_claim %d",
1199                   MAJOR(__entry->dev), MINOR(__entry->dev),
1200                   (unsigned long) __entry->ino,
1201                   __entry->mode, __entry->i_blocks,
1202                   __entry->used_blocks, __entry->reserved_data_blocks,
1203                   __entry->reserved_meta_blocks, __entry->allocated_meta_blocks,
1204                   __entry->quota_claim)
1205 );
1206
1207 TRACE_EVENT(ext4_da_reserve_space,
1208         TP_PROTO(struct inode *inode),
1209
1210         TP_ARGS(inode),
1211
1212         TP_STRUCT__entry(
1213                 __field(        dev_t,  dev                     )
1214                 __field(        ino_t,  ino                     )
1215                 __field(        __u64,  i_blocks                )
1216                 __field(        int,    reserved_data_blocks    )
1217                 __field(        int,    reserved_meta_blocks    )
1218                 __field(        __u16,  mode                    )
1219         ),
1220
1221         TP_fast_assign(
1222                 __entry->dev    = inode->i_sb->s_dev;
1223                 __entry->ino    = inode->i_ino;
1224                 __entry->i_blocks = inode->i_blocks;
1225                 __entry->reserved_data_blocks = EXT4_I(inode)->i_reserved_data_blocks;
1226                 __entry->reserved_meta_blocks = EXT4_I(inode)->i_reserved_meta_blocks;
1227                 __entry->mode   = inode->i_mode;
1228         ),
1229
1230         TP_printk("dev %d,%d ino %lu mode 0%o i_blocks %llu "
1231                   "reserved_data_blocks %d reserved_meta_blocks %d",
1232                   MAJOR(__entry->dev), MINOR(__entry->dev),
1233                   (unsigned long) __entry->ino,
1234                   __entry->mode, __entry->i_blocks,
1235                   __entry->reserved_data_blocks,
1236                   __entry->reserved_meta_blocks)
1237 );
1238
1239 TRACE_EVENT(ext4_da_release_space,
1240         TP_PROTO(struct inode *inode, int freed_blocks),
1241
1242         TP_ARGS(inode, freed_blocks),
1243
1244         TP_STRUCT__entry(
1245                 __field(        dev_t,  dev                     )
1246                 __field(        ino_t,  ino                     )
1247                 __field(        __u64,  i_blocks                )
1248                 __field(        int,    freed_blocks            )
1249                 __field(        int,    reserved_data_blocks    )
1250                 __field(        int,    reserved_meta_blocks    )
1251                 __field(        int,    allocated_meta_blocks   )
1252                 __field(        __u16,  mode                    )
1253         ),
1254
1255         TP_fast_assign(
1256                 __entry->dev    = inode->i_sb->s_dev;
1257                 __entry->ino    = inode->i_ino;
1258                 __entry->i_blocks = inode->i_blocks;
1259                 __entry->freed_blocks = freed_blocks;
1260                 __entry->reserved_data_blocks = EXT4_I(inode)->i_reserved_data_blocks;
1261                 __entry->reserved_meta_blocks = EXT4_I(inode)->i_reserved_meta_blocks;
1262                 __entry->allocated_meta_blocks = EXT4_I(inode)->i_allocated_meta_blocks;
1263                 __entry->mode   = inode->i_mode;
1264         ),
1265
1266         TP_printk("dev %d,%d ino %lu mode 0%o i_blocks %llu freed_blocks %d "
1267                   "reserved_data_blocks %d reserved_meta_blocks %d "
1268                   "allocated_meta_blocks %d",
1269                   MAJOR(__entry->dev), MINOR(__entry->dev),
1270                   (unsigned long) __entry->ino,
1271                   __entry->mode, __entry->i_blocks,
1272                   __entry->freed_blocks, __entry->reserved_data_blocks,
1273                   __entry->reserved_meta_blocks, __entry->allocated_meta_blocks)
1274 );
1275
1276 DECLARE_EVENT_CLASS(ext4__bitmap_load,
1277         TP_PROTO(struct super_block *sb, unsigned long group),
1278
1279         TP_ARGS(sb, group),
1280
1281         TP_STRUCT__entry(
1282                 __field(        dev_t,  dev                     )
1283                 __field(        __u32,  group                   )
1284
1285         ),
1286
1287         TP_fast_assign(
1288                 __entry->dev    = sb->s_dev;
1289                 __entry->group  = group;
1290         ),
1291
1292         TP_printk("dev %d,%d group %u",
1293                   MAJOR(__entry->dev), MINOR(__entry->dev),
1294                   __entry->group)
1295 );
1296
1297 DEFINE_EVENT(ext4__bitmap_load, ext4_mb_bitmap_load,
1298
1299         TP_PROTO(struct super_block *sb, unsigned long group),
1300
1301         TP_ARGS(sb, group)
1302 );
1303
1304 DEFINE_EVENT(ext4__bitmap_load, ext4_mb_buddy_bitmap_load,
1305
1306         TP_PROTO(struct super_block *sb, unsigned long group),
1307
1308         TP_ARGS(sb, group)
1309 );
1310
1311 DEFINE_EVENT(ext4__bitmap_load, ext4_read_block_bitmap_load,
1312
1313         TP_PROTO(struct super_block *sb, unsigned long group),
1314
1315         TP_ARGS(sb, group)
1316 );
1317
1318 DEFINE_EVENT(ext4__bitmap_load, ext4_load_inode_bitmap,
1319
1320         TP_PROTO(struct super_block *sb, unsigned long group),
1321
1322         TP_ARGS(sb, group)
1323 );
1324
1325 TRACE_EVENT(ext4_direct_IO_enter,
1326         TP_PROTO(struct inode *inode, loff_t offset, unsigned long len, int rw),
1327
1328         TP_ARGS(inode, offset, len, rw),
1329
1330         TP_STRUCT__entry(
1331                 __field(        dev_t,  dev                     )
1332                 __field(        ino_t,  ino                     )
1333                 __field(        loff_t, pos                     )
1334                 __field(        unsigned long,  len             )
1335                 __field(        int,    rw                      )
1336         ),
1337
1338         TP_fast_assign(
1339                 __entry->dev    = inode->i_sb->s_dev;
1340                 __entry->ino    = inode->i_ino;
1341                 __entry->pos    = offset;
1342                 __entry->len    = len;
1343                 __entry->rw     = rw;
1344         ),
1345
1346         TP_printk("dev %d,%d ino %lu pos %lld len %lu rw %d",
1347                   MAJOR(__entry->dev), MINOR(__entry->dev),
1348                   (unsigned long) __entry->ino,
1349                   __entry->pos, __entry->len, __entry->rw)
1350 );
1351
1352 TRACE_EVENT(ext4_direct_IO_exit,
1353         TP_PROTO(struct inode *inode, loff_t offset, unsigned long len,
1354                  int rw, int ret),
1355
1356         TP_ARGS(inode, offset, len, rw, ret),
1357
1358         TP_STRUCT__entry(
1359                 __field(        dev_t,  dev                     )
1360                 __field(        ino_t,  ino                     )
1361                 __field(        loff_t, pos                     )
1362                 __field(        unsigned long,  len             )
1363                 __field(        int,    rw                      )
1364                 __field(        int,    ret                     )
1365         ),
1366
1367         TP_fast_assign(
1368                 __entry->dev    = inode->i_sb->s_dev;
1369                 __entry->ino    = inode->i_ino;
1370                 __entry->pos    = offset;
1371                 __entry->len    = len;
1372                 __entry->rw     = rw;
1373                 __entry->ret    = ret;
1374         ),
1375
1376         TP_printk("dev %d,%d ino %lu pos %lld len %lu rw %d ret %d",
1377                   MAJOR(__entry->dev), MINOR(__entry->dev),
1378                   (unsigned long) __entry->ino,
1379                   __entry->pos, __entry->len,
1380                   __entry->rw, __entry->ret)
1381 );
1382
1383 DECLARE_EVENT_CLASS(ext4__fallocate_mode,
1384         TP_PROTO(struct inode *inode, loff_t offset, loff_t len, int mode),
1385
1386         TP_ARGS(inode, offset, len, mode),
1387
1388         TP_STRUCT__entry(
1389                 __field(        dev_t,  dev                     )
1390                 __field(        ino_t,  ino                     )
1391                 __field(        loff_t, offset                  )
1392                 __field(        loff_t, len                     )
1393                 __field(        int,    mode                    )
1394         ),
1395
1396         TP_fast_assign(
1397                 __entry->dev    = inode->i_sb->s_dev;
1398                 __entry->ino    = inode->i_ino;
1399                 __entry->offset = offset;
1400                 __entry->len    = len;
1401                 __entry->mode   = mode;
1402         ),
1403
1404         TP_printk("dev %d,%d ino %lu offset %lld len %lld mode %s",
1405                   MAJOR(__entry->dev), MINOR(__entry->dev),
1406                   (unsigned long) __entry->ino,
1407                   __entry->offset, __entry->len,
1408                   show_falloc_mode(__entry->mode))
1409 );
1410
1411 DEFINE_EVENT(ext4__fallocate_mode, ext4_fallocate_enter,
1412
1413         TP_PROTO(struct inode *inode, loff_t offset, loff_t len, int mode),
1414
1415         TP_ARGS(inode, offset, len, mode)
1416 );
1417
1418 DEFINE_EVENT(ext4__fallocate_mode, ext4_punch_hole,
1419
1420         TP_PROTO(struct inode *inode, loff_t offset, loff_t len, int mode),
1421
1422         TP_ARGS(inode, offset, len, mode)
1423 );
1424
1425 DEFINE_EVENT(ext4__fallocate_mode, ext4_zero_range,
1426
1427         TP_PROTO(struct inode *inode, loff_t offset, loff_t len, int mode),
1428
1429         TP_ARGS(inode, offset, len, mode)
1430 );
1431
1432 TRACE_EVENT(ext4_fallocate_exit,
1433         TP_PROTO(struct inode *inode, loff_t offset,
1434                  unsigned int max_blocks, int ret),
1435
1436         TP_ARGS(inode, offset, max_blocks, ret),
1437
1438         TP_STRUCT__entry(
1439                 __field(        dev_t,  dev                     )
1440                 __field(        ino_t,  ino                     )
1441                 __field(        loff_t, pos                     )
1442                 __field(        unsigned int,   blocks          )
1443                 __field(        int,    ret                     )
1444         ),
1445
1446         TP_fast_assign(
1447                 __entry->dev    = inode->i_sb->s_dev;
1448                 __entry->ino    = inode->i_ino;
1449                 __entry->pos    = offset;
1450                 __entry->blocks = max_blocks;
1451                 __entry->ret    = ret;
1452         ),
1453
1454         TP_printk("dev %d,%d ino %lu pos %lld blocks %u ret %d",
1455                   MAJOR(__entry->dev), MINOR(__entry->dev),
1456                   (unsigned long) __entry->ino,
1457                   __entry->pos, __entry->blocks,
1458                   __entry->ret)
1459 );
1460
1461 TRACE_EVENT(ext4_unlink_enter,
1462         TP_PROTO(struct inode *parent, struct dentry *dentry),
1463
1464         TP_ARGS(parent, dentry),
1465
1466         TP_STRUCT__entry(
1467                 __field(        dev_t,  dev                     )
1468                 __field(        ino_t,  ino                     )
1469                 __field(        ino_t,  parent                  )
1470                 __field(        loff_t, size                    )
1471         ),
1472
1473         TP_fast_assign(
1474                 __entry->dev            = dentry->d_sb->s_dev;
1475                 __entry->ino            = d_inode(dentry)->i_ino;
1476                 __entry->parent         = parent->i_ino;
1477                 __entry->size           = d_inode(dentry)->i_size;
1478         ),
1479
1480         TP_printk("dev %d,%d ino %lu size %lld parent %lu",
1481                   MAJOR(__entry->dev), MINOR(__entry->dev),
1482                   (unsigned long) __entry->ino, __entry->size,
1483                   (unsigned long) __entry->parent)
1484 );
1485
1486 TRACE_EVENT(ext4_unlink_exit,
1487         TP_PROTO(struct dentry *dentry, int ret),
1488
1489         TP_ARGS(dentry, ret),
1490
1491         TP_STRUCT__entry(
1492                 __field(        dev_t,  dev                     )
1493                 __field(        ino_t,  ino                     )
1494                 __field(        int,    ret                     )
1495         ),
1496
1497         TP_fast_assign(
1498                 __entry->dev            = dentry->d_sb->s_dev;
1499                 __entry->ino            = d_inode(dentry)->i_ino;
1500                 __entry->ret            = ret;
1501         ),
1502
1503         TP_printk("dev %d,%d ino %lu ret %d",
1504                   MAJOR(__entry->dev), MINOR(__entry->dev),
1505                   (unsigned long) __entry->ino,
1506                   __entry->ret)
1507 );
1508
1509 DECLARE_EVENT_CLASS(ext4__truncate,
1510         TP_PROTO(struct inode *inode),
1511
1512         TP_ARGS(inode),
1513
1514         TP_STRUCT__entry(
1515                 __field(        dev_t,          dev             )
1516                 __field(        ino_t,          ino             )
1517                 __field(        __u64,          blocks          )
1518         ),
1519
1520         TP_fast_assign(
1521                 __entry->dev    = inode->i_sb->s_dev;
1522                 __entry->ino    = inode->i_ino;
1523                 __entry->blocks = inode->i_blocks;
1524         ),
1525
1526         TP_printk("dev %d,%d ino %lu blocks %llu",
1527                   MAJOR(__entry->dev), MINOR(__entry->dev),
1528                   (unsigned long) __entry->ino, __entry->blocks)
1529 );
1530
1531 DEFINE_EVENT(ext4__truncate, ext4_truncate_enter,
1532
1533         TP_PROTO(struct inode *inode),
1534
1535         TP_ARGS(inode)
1536 );
1537
1538 DEFINE_EVENT(ext4__truncate, ext4_truncate_exit,
1539
1540         TP_PROTO(struct inode *inode),
1541
1542         TP_ARGS(inode)
1543 );
1544
1545 /* 'ux' is the unwritten extent. */
1546 TRACE_EVENT(ext4_ext_convert_to_initialized_enter,
1547         TP_PROTO(struct inode *inode, struct ext4_map_blocks *map,
1548                  struct ext4_extent *ux),
1549
1550         TP_ARGS(inode, map, ux),
1551
1552         TP_STRUCT__entry(
1553                 __field(        dev_t,          dev     )
1554                 __field(        ino_t,          ino     )
1555                 __field(        ext4_lblk_t,    m_lblk  )
1556                 __field(        unsigned,       m_len   )
1557                 __field(        ext4_lblk_t,    u_lblk  )
1558                 __field(        unsigned,       u_len   )
1559                 __field(        ext4_fsblk_t,   u_pblk  )
1560         ),
1561
1562         TP_fast_assign(
1563                 __entry->dev            = inode->i_sb->s_dev;
1564                 __entry->ino            = inode->i_ino;
1565                 __entry->m_lblk         = map->m_lblk;
1566                 __entry->m_len          = map->m_len;
1567                 __entry->u_lblk         = le32_to_cpu(ux->ee_block);
1568                 __entry->u_len          = ext4_ext_get_actual_len(ux);
1569                 __entry->u_pblk         = ext4_ext_pblock(ux);
1570         ),
1571
1572         TP_printk("dev %d,%d ino %lu m_lblk %u m_len %u u_lblk %u u_len %u "
1573                   "u_pblk %llu",
1574                   MAJOR(__entry->dev), MINOR(__entry->dev),
1575                   (unsigned long) __entry->ino,
1576                   __entry->m_lblk, __entry->m_len,
1577                   __entry->u_lblk, __entry->u_len, __entry->u_pblk)
1578 );
1579
1580 /*
1581  * 'ux' is the unwritten extent.
1582  * 'ix' is the initialized extent to which blocks are transferred.
1583  */
1584 TRACE_EVENT(ext4_ext_convert_to_initialized_fastpath,
1585         TP_PROTO(struct inode *inode, struct ext4_map_blocks *map,
1586                  struct ext4_extent *ux, struct ext4_extent *ix),
1587
1588         TP_ARGS(inode, map, ux, ix),
1589
1590         TP_STRUCT__entry(
1591                 __field(        dev_t,          dev     )
1592                 __field(        ino_t,          ino     )
1593                 __field(        ext4_lblk_t,    m_lblk  )
1594                 __field(        unsigned,       m_len   )
1595                 __field(        ext4_lblk_t,    u_lblk  )
1596                 __field(        unsigned,       u_len   )
1597                 __field(        ext4_fsblk_t,   u_pblk  )
1598                 __field(        ext4_lblk_t,    i_lblk  )
1599                 __field(        unsigned,       i_len   )
1600                 __field(        ext4_fsblk_t,   i_pblk  )
1601         ),
1602
1603         TP_fast_assign(
1604                 __entry->dev            = inode->i_sb->s_dev;
1605                 __entry->ino            = inode->i_ino;
1606                 __entry->m_lblk         = map->m_lblk;
1607                 __entry->m_len          = map->m_len;
1608                 __entry->u_lblk         = le32_to_cpu(ux->ee_block);
1609                 __entry->u_len          = ext4_ext_get_actual_len(ux);
1610                 __entry->u_pblk         = ext4_ext_pblock(ux);
1611                 __entry->i_lblk         = le32_to_cpu(ix->ee_block);
1612                 __entry->i_len          = ext4_ext_get_actual_len(ix);
1613                 __entry->i_pblk         = ext4_ext_pblock(ix);
1614         ),
1615
1616         TP_printk("dev %d,%d ino %lu m_lblk %u m_len %u "
1617                   "u_lblk %u u_len %u u_pblk %llu "
1618                   "i_lblk %u i_len %u i_pblk %llu ",
1619                   MAJOR(__entry->dev), MINOR(__entry->dev),
1620                   (unsigned long) __entry->ino,
1621                   __entry->m_lblk, __entry->m_len,
1622                   __entry->u_lblk, __entry->u_len, __entry->u_pblk,
1623                   __entry->i_lblk, __entry->i_len, __entry->i_pblk)
1624 );
1625
1626 DECLARE_EVENT_CLASS(ext4__map_blocks_enter,
1627         TP_PROTO(struct inode *inode, ext4_lblk_t lblk,
1628                  unsigned int len, unsigned int flags),
1629
1630         TP_ARGS(inode, lblk, len, flags),
1631
1632         TP_STRUCT__entry(
1633                 __field(        dev_t,          dev             )
1634                 __field(        ino_t,          ino             )
1635                 __field(        ext4_lblk_t,    lblk            )
1636                 __field(        unsigned int,   len             )
1637                 __field(        unsigned int,   flags           )
1638         ),
1639
1640         TP_fast_assign(
1641                 __entry->dev    = inode->i_sb->s_dev;
1642                 __entry->ino    = inode->i_ino;
1643                 __entry->lblk   = lblk;
1644                 __entry->len    = len;
1645                 __entry->flags  = flags;
1646         ),
1647
1648         TP_printk("dev %d,%d ino %lu lblk %u len %u flags %s",
1649                   MAJOR(__entry->dev), MINOR(__entry->dev),
1650                   (unsigned long) __entry->ino,
1651                   __entry->lblk, __entry->len, show_map_flags(__entry->flags))
1652 );
1653
1654 DEFINE_EVENT(ext4__map_blocks_enter, ext4_ext_map_blocks_enter,
1655         TP_PROTO(struct inode *inode, ext4_lblk_t lblk,
1656                  unsigned len, unsigned flags),
1657
1658         TP_ARGS(inode, lblk, len, flags)
1659 );
1660
1661 DEFINE_EVENT(ext4__map_blocks_enter, ext4_ind_map_blocks_enter,
1662         TP_PROTO(struct inode *inode, ext4_lblk_t lblk,
1663                  unsigned len, unsigned flags),
1664
1665         TP_ARGS(inode, lblk, len, flags)
1666 );
1667
1668 DECLARE_EVENT_CLASS(ext4__map_blocks_exit,
1669         TP_PROTO(struct inode *inode, unsigned flags, struct ext4_map_blocks *map,
1670                  int ret),
1671
1672         TP_ARGS(inode, flags, map, ret),
1673
1674         TP_STRUCT__entry(
1675                 __field(        dev_t,          dev             )
1676                 __field(        ino_t,          ino             )
1677                 __field(        unsigned int,   flags           )
1678                 __field(        ext4_fsblk_t,   pblk            )
1679                 __field(        ext4_lblk_t,    lblk            )
1680                 __field(        unsigned int,   len             )
1681                 __field(        unsigned int,   mflags          )
1682                 __field(        int,            ret             )
1683         ),
1684
1685         TP_fast_assign(
1686                 __entry->dev    = inode->i_sb->s_dev;
1687                 __entry->ino    = inode->i_ino;
1688                 __entry->flags  = flags;
1689                 __entry->pblk   = map->m_pblk;
1690                 __entry->lblk   = map->m_lblk;
1691                 __entry->len    = map->m_len;
1692                 __entry->mflags = map->m_flags;
1693                 __entry->ret    = ret;
1694         ),
1695
1696         TP_printk("dev %d,%d ino %lu flags %s lblk %u pblk %llu len %u "
1697                   "mflags %s ret %d",
1698                   MAJOR(__entry->dev), MINOR(__entry->dev),
1699                   (unsigned long) __entry->ino,
1700                   show_map_flags(__entry->flags), __entry->lblk, __entry->pblk,
1701                   __entry->len, show_mflags(__entry->mflags), __entry->ret)
1702 );
1703
1704 DEFINE_EVENT(ext4__map_blocks_exit, ext4_ext_map_blocks_exit,
1705         TP_PROTO(struct inode *inode, unsigned flags,
1706                  struct ext4_map_blocks *map, int ret),
1707
1708         TP_ARGS(inode, flags, map, ret)
1709 );
1710
1711 DEFINE_EVENT(ext4__map_blocks_exit, ext4_ind_map_blocks_exit,
1712         TP_PROTO(struct inode *inode, unsigned flags,
1713                  struct ext4_map_blocks *map, int ret),
1714
1715         TP_ARGS(inode, flags, map, ret)
1716 );
1717
1718 TRACE_EVENT(ext4_ext_load_extent,
1719         TP_PROTO(struct inode *inode, ext4_lblk_t lblk, ext4_fsblk_t pblk),
1720
1721         TP_ARGS(inode, lblk, pblk),
1722
1723         TP_STRUCT__entry(
1724                 __field(        dev_t,          dev             )
1725                 __field(        ino_t,          ino             )
1726                 __field(        ext4_fsblk_t,   pblk            )
1727                 __field(        ext4_lblk_t,    lblk            )
1728         ),
1729
1730         TP_fast_assign(
1731                 __entry->dev    = inode->i_sb->s_dev;
1732                 __entry->ino    = inode->i_ino;
1733                 __entry->pblk   = pblk;
1734                 __entry->lblk   = lblk;
1735         ),
1736
1737         TP_printk("dev %d,%d ino %lu lblk %u pblk %llu",
1738                   MAJOR(__entry->dev), MINOR(__entry->dev),
1739                   (unsigned long) __entry->ino,
1740                   __entry->lblk, __entry->pblk)
1741 );
1742
1743 TRACE_EVENT(ext4_load_inode,
1744         TP_PROTO(struct inode *inode),
1745
1746         TP_ARGS(inode),
1747
1748         TP_STRUCT__entry(
1749                 __field(        dev_t,  dev             )
1750                 __field(        ino_t,  ino             )
1751         ),
1752
1753         TP_fast_assign(
1754                 __entry->dev            = inode->i_sb->s_dev;
1755                 __entry->ino            = inode->i_ino;
1756         ),
1757
1758         TP_printk("dev %d,%d ino %ld",
1759                   MAJOR(__entry->dev), MINOR(__entry->dev),
1760                   (unsigned long) __entry->ino)
1761 );
1762
1763 TRACE_EVENT(ext4_journal_start,
1764         TP_PROTO(struct super_block *sb, int blocks, int rsv_blocks,
1765                  unsigned long IP),
1766
1767         TP_ARGS(sb, blocks, rsv_blocks, IP),
1768
1769         TP_STRUCT__entry(
1770                 __field(        dev_t,  dev                     )
1771                 __field(unsigned long,  ip                      )
1772                 __field(          int,  blocks                  )
1773                 __field(          int,  rsv_blocks              )
1774         ),
1775
1776         TP_fast_assign(
1777                 __entry->dev             = sb->s_dev;
1778                 __entry->ip              = IP;
1779                 __entry->blocks          = blocks;
1780                 __entry->rsv_blocks      = rsv_blocks;
1781         ),
1782
1783         TP_printk("dev %d,%d blocks, %d rsv_blocks, %d caller %pS",
1784                   MAJOR(__entry->dev), MINOR(__entry->dev),
1785                   __entry->blocks, __entry->rsv_blocks, (void *)__entry->ip)
1786 );
1787
1788 TRACE_EVENT(ext4_journal_start_reserved,
1789         TP_PROTO(struct super_block *sb, int blocks, unsigned long IP),
1790
1791         TP_ARGS(sb, blocks, IP),
1792
1793         TP_STRUCT__entry(
1794                 __field(        dev_t,  dev                     )
1795                 __field(unsigned long,  ip                      )
1796                 __field(          int,  blocks                  )
1797         ),
1798
1799         TP_fast_assign(
1800                 __entry->dev             = sb->s_dev;
1801                 __entry->ip              = IP;
1802                 __entry->blocks          = blocks;
1803         ),
1804
1805         TP_printk("dev %d,%d blocks, %d caller %pS",
1806                   MAJOR(__entry->dev), MINOR(__entry->dev),
1807                   __entry->blocks, (void *)__entry->ip)
1808 );
1809
1810 DECLARE_EVENT_CLASS(ext4__trim,
1811         TP_PROTO(struct super_block *sb,
1812                  ext4_group_t group,
1813                  ext4_grpblk_t start,
1814                  ext4_grpblk_t len),
1815
1816         TP_ARGS(sb, group, start, len),
1817
1818         TP_STRUCT__entry(
1819                 __field(        int,    dev_major               )
1820                 __field(        int,    dev_minor               )
1821                 __field(        __u32,  group                   )
1822                 __field(        int,    start                   )
1823                 __field(        int,    len                     )
1824         ),
1825
1826         TP_fast_assign(
1827                 __entry->dev_major      = MAJOR(sb->s_dev);
1828                 __entry->dev_minor      = MINOR(sb->s_dev);
1829                 __entry->group          = group;
1830                 __entry->start          = start;
1831                 __entry->len            = len;
1832         ),
1833
1834         TP_printk("dev %d,%d group %u, start %d, len %d",
1835                   __entry->dev_major, __entry->dev_minor,
1836                   __entry->group, __entry->start, __entry->len)
1837 );
1838
1839 DEFINE_EVENT(ext4__trim, ext4_trim_extent,
1840
1841         TP_PROTO(struct super_block *sb,
1842                  ext4_group_t group,
1843                  ext4_grpblk_t start,
1844                  ext4_grpblk_t len),
1845
1846         TP_ARGS(sb, group, start, len)
1847 );
1848
1849 DEFINE_EVENT(ext4__trim, ext4_trim_all_free,
1850
1851         TP_PROTO(struct super_block *sb,
1852                  ext4_group_t group,
1853                  ext4_grpblk_t start,
1854                  ext4_grpblk_t len),
1855
1856         TP_ARGS(sb, group, start, len)
1857 );
1858
1859 TRACE_EVENT(ext4_ext_handle_unwritten_extents,
1860         TP_PROTO(struct inode *inode, struct ext4_map_blocks *map, int flags,
1861                  unsigned int allocated, ext4_fsblk_t newblock),
1862
1863         TP_ARGS(inode, map, flags, allocated, newblock),
1864
1865         TP_STRUCT__entry(
1866                 __field(        dev_t,          dev             )
1867                 __field(        ino_t,          ino             )
1868                 __field(        int,            flags           )
1869                 __field(        ext4_lblk_t,    lblk            )
1870                 __field(        ext4_fsblk_t,   pblk            )
1871                 __field(        unsigned int,   len             )
1872                 __field(        unsigned int,   allocated       )
1873                 __field(        ext4_fsblk_t,   newblk          )
1874         ),
1875
1876         TP_fast_assign(
1877                 __entry->dev            = inode->i_sb->s_dev;
1878                 __entry->ino            = inode->i_ino;
1879                 __entry->flags          = flags;
1880                 __entry->lblk           = map->m_lblk;
1881                 __entry->pblk           = map->m_pblk;
1882                 __entry->len            = map->m_len;
1883                 __entry->allocated      = allocated;
1884                 __entry->newblk         = newblock;
1885         ),
1886
1887         TP_printk("dev %d,%d ino %lu m_lblk %u m_pblk %llu m_len %u flags %s "
1888                   "allocated %d newblock %llu",
1889                   MAJOR(__entry->dev), MINOR(__entry->dev),
1890                   (unsigned long) __entry->ino,
1891                   (unsigned) __entry->lblk, (unsigned long long) __entry->pblk,
1892                   __entry->len, show_map_flags(__entry->flags),
1893                   (unsigned int) __entry->allocated,
1894                   (unsigned long long) __entry->newblk)
1895 );
1896
1897 TRACE_EVENT(ext4_get_implied_cluster_alloc_exit,
1898         TP_PROTO(struct super_block *sb, struct ext4_map_blocks *map, int ret),
1899
1900         TP_ARGS(sb, map, ret),
1901
1902         TP_STRUCT__entry(
1903                 __field(        dev_t,          dev     )
1904                 __field(        unsigned int,   flags   )
1905                 __field(        ext4_lblk_t,    lblk    )
1906                 __field(        ext4_fsblk_t,   pblk    )
1907                 __field(        unsigned int,   len     )
1908                 __field(        int,            ret     )
1909         ),
1910
1911         TP_fast_assign(
1912                 __entry->dev    = sb->s_dev;
1913                 __entry->flags  = map->m_flags;
1914                 __entry->lblk   = map->m_lblk;
1915                 __entry->pblk   = map->m_pblk;
1916                 __entry->len    = map->m_len;
1917                 __entry->ret    = ret;
1918         ),
1919
1920         TP_printk("dev %d,%d m_lblk %u m_pblk %llu m_len %u m_flags %s ret %d",
1921                   MAJOR(__entry->dev), MINOR(__entry->dev),
1922                   __entry->lblk, (unsigned long long) __entry->pblk,
1923                   __entry->len, show_mflags(__entry->flags), __entry->ret)
1924 );
1925
1926 TRACE_EVENT(ext4_ext_put_in_cache,
1927         TP_PROTO(struct inode *inode, ext4_lblk_t lblk, unsigned int len,
1928                  ext4_fsblk_t start),
1929
1930         TP_ARGS(inode, lblk, len, start),
1931
1932         TP_STRUCT__entry(
1933                 __field(        dev_t,          dev     )
1934                 __field(        ino_t,          ino     )
1935                 __field(        ext4_lblk_t,    lblk    )
1936                 __field(        unsigned int,   len     )
1937                 __field(        ext4_fsblk_t,   start   )
1938         ),
1939
1940         TP_fast_assign(
1941                 __entry->dev    = inode->i_sb->s_dev;
1942                 __entry->ino    = inode->i_ino;
1943                 __entry->lblk   = lblk;
1944                 __entry->len    = len;
1945                 __entry->start  = start;
1946         ),
1947
1948         TP_printk("dev %d,%d ino %lu lblk %u len %u start %llu",
1949                   MAJOR(__entry->dev), MINOR(__entry->dev),
1950                   (unsigned long) __entry->ino,
1951                   (unsigned) __entry->lblk,
1952                   __entry->len,
1953                   (unsigned long long) __entry->start)
1954 );
1955
1956 TRACE_EVENT(ext4_ext_in_cache,
1957         TP_PROTO(struct inode *inode, ext4_lblk_t lblk, int ret),
1958
1959         TP_ARGS(inode, lblk, ret),
1960
1961         TP_STRUCT__entry(
1962                 __field(        dev_t,          dev     )
1963                 __field(        ino_t,          ino     )
1964                 __field(        ext4_lblk_t,    lblk    )
1965                 __field(        int,            ret     )
1966         ),
1967
1968         TP_fast_assign(
1969                 __entry->dev    = inode->i_sb->s_dev;
1970                 __entry->ino    = inode->i_ino;
1971                 __entry->lblk   = lblk;
1972                 __entry->ret    = ret;
1973         ),
1974
1975         TP_printk("dev %d,%d ino %lu lblk %u ret %d",
1976                   MAJOR(__entry->dev), MINOR(__entry->dev),
1977                   (unsigned long) __entry->ino,
1978                   (unsigned) __entry->lblk,
1979                   __entry->ret)
1980
1981 );
1982
1983 TRACE_EVENT(ext4_find_delalloc_range,
1984         TP_PROTO(struct inode *inode, ext4_lblk_t from, ext4_lblk_t to,
1985                 int reverse, int found, ext4_lblk_t found_blk),
1986
1987         TP_ARGS(inode, from, to, reverse, found, found_blk),
1988
1989         TP_STRUCT__entry(
1990                 __field(        dev_t,          dev             )
1991                 __field(        ino_t,          ino             )
1992                 __field(        ext4_lblk_t,    from            )
1993                 __field(        ext4_lblk_t,    to              )
1994                 __field(        int,            reverse         )
1995                 __field(        int,            found           )
1996                 __field(        ext4_lblk_t,    found_blk       )
1997         ),
1998
1999         TP_fast_assign(
2000                 __entry->dev            = inode->i_sb->s_dev;
2001                 __entry->ino            = inode->i_ino;
2002                 __entry->from           = from;
2003                 __entry->to             = to;
2004                 __entry->reverse        = reverse;
2005                 __entry->found          = found;
2006                 __entry->found_blk      = found_blk;
2007         ),
2008
2009         TP_printk("dev %d,%d ino %lu from %u to %u reverse %d found %d "
2010                   "(blk = %u)",
2011                   MAJOR(__entry->dev), MINOR(__entry->dev),
2012                   (unsigned long) __entry->ino,
2013                   (unsigned) __entry->from, (unsigned) __entry->to,
2014                   __entry->reverse, __entry->found,
2015                   (unsigned) __entry->found_blk)
2016 );
2017
2018 TRACE_EVENT(ext4_get_reserved_cluster_alloc,
2019         TP_PROTO(struct inode *inode, ext4_lblk_t lblk, unsigned int len),
2020
2021         TP_ARGS(inode, lblk, len),
2022
2023         TP_STRUCT__entry(
2024                 __field(        dev_t,          dev     )
2025                 __field(        ino_t,          ino     )
2026                 __field(        ext4_lblk_t,    lblk    )
2027                 __field(        unsigned int,   len     )
2028         ),
2029
2030         TP_fast_assign(
2031                 __entry->dev    = inode->i_sb->s_dev;
2032                 __entry->ino    = inode->i_ino;
2033                 __entry->lblk   = lblk;
2034                 __entry->len    = len;
2035         ),
2036
2037         TP_printk("dev %d,%d ino %lu lblk %u len %u",
2038                   MAJOR(__entry->dev), MINOR(__entry->dev),
2039                   (unsigned long) __entry->ino,
2040                   (unsigned) __entry->lblk,
2041                   __entry->len)
2042 );
2043
2044 TRACE_EVENT(ext4_ext_show_extent,
2045         TP_PROTO(struct inode *inode, ext4_lblk_t lblk, ext4_fsblk_t pblk,
2046                  unsigned short len),
2047
2048         TP_ARGS(inode, lblk, pblk, len),
2049
2050         TP_STRUCT__entry(
2051                 __field(        dev_t,          dev     )
2052                 __field(        ino_t,          ino     )
2053                 __field(        ext4_fsblk_t,   pblk    )
2054                 __field(        ext4_lblk_t,    lblk    )
2055                 __field(        unsigned short, len     )
2056         ),
2057
2058         TP_fast_assign(
2059                 __entry->dev    = inode->i_sb->s_dev;
2060                 __entry->ino    = inode->i_ino;
2061                 __entry->pblk   = pblk;
2062                 __entry->lblk   = lblk;
2063                 __entry->len    = len;
2064         ),
2065
2066         TP_printk("dev %d,%d ino %lu lblk %u pblk %llu len %u",
2067                   MAJOR(__entry->dev), MINOR(__entry->dev),
2068                   (unsigned long) __entry->ino,
2069                   (unsigned) __entry->lblk,
2070                   (unsigned long long) __entry->pblk,
2071                   (unsigned short) __entry->len)
2072 );
2073
2074 TRACE_EVENT(ext4_remove_blocks,
2075             TP_PROTO(struct inode *inode, struct ext4_extent *ex,
2076                 ext4_lblk_t from, ext4_fsblk_t to,
2077                 long long partial_cluster),
2078
2079         TP_ARGS(inode, ex, from, to, partial_cluster),
2080
2081         TP_STRUCT__entry(
2082                 __field(        dev_t,          dev     )
2083                 __field(        ino_t,          ino     )
2084                 __field(        ext4_lblk_t,    from    )
2085                 __field(        ext4_lblk_t,    to      )
2086                 __field(        long long,      partial )
2087                 __field(        ext4_fsblk_t,   ee_pblk )
2088                 __field(        ext4_lblk_t,    ee_lblk )
2089                 __field(        unsigned short, ee_len  )
2090         ),
2091
2092         TP_fast_assign(
2093                 __entry->dev            = inode->i_sb->s_dev;
2094                 __entry->ino            = inode->i_ino;
2095                 __entry->from           = from;
2096                 __entry->to             = to;
2097                 __entry->partial        = partial_cluster;
2098                 __entry->ee_pblk        = ext4_ext_pblock(ex);
2099                 __entry->ee_lblk        = le32_to_cpu(ex->ee_block);
2100                 __entry->ee_len         = ext4_ext_get_actual_len(ex);
2101         ),
2102
2103         TP_printk("dev %d,%d ino %lu extent [%u(%llu), %u]"
2104                   "from %u to %u partial_cluster %lld",
2105                   MAJOR(__entry->dev), MINOR(__entry->dev),
2106                   (unsigned long) __entry->ino,
2107                   (unsigned) __entry->ee_lblk,
2108                   (unsigned long long) __entry->ee_pblk,
2109                   (unsigned short) __entry->ee_len,
2110                   (unsigned) __entry->from,
2111                   (unsigned) __entry->to,
2112                   (long long) __entry->partial)
2113 );
2114
2115 TRACE_EVENT(ext4_ext_rm_leaf,
2116         TP_PROTO(struct inode *inode, ext4_lblk_t start,
2117                  struct ext4_extent *ex,
2118                  long long partial_cluster),
2119
2120         TP_ARGS(inode, start, ex, partial_cluster),
2121
2122         TP_STRUCT__entry(
2123                 __field(        dev_t,          dev     )
2124                 __field(        ino_t,          ino     )
2125                 __field(        long long,      partial )
2126                 __field(        ext4_lblk_t,    start   )
2127                 __field(        ext4_lblk_t,    ee_lblk )
2128                 __field(        ext4_fsblk_t,   ee_pblk )
2129                 __field(        short,          ee_len  )
2130         ),
2131
2132         TP_fast_assign(
2133                 __entry->dev            = inode->i_sb->s_dev;
2134                 __entry->ino            = inode->i_ino;
2135                 __entry->partial        = partial_cluster;
2136                 __entry->start          = start;
2137                 __entry->ee_lblk        = le32_to_cpu(ex->ee_block);
2138                 __entry->ee_pblk        = ext4_ext_pblock(ex);
2139                 __entry->ee_len         = ext4_ext_get_actual_len(ex);
2140         ),
2141
2142         TP_printk("dev %d,%d ino %lu start_lblk %u last_extent [%u(%llu), %u]"
2143                   "partial_cluster %lld",
2144                   MAJOR(__entry->dev), MINOR(__entry->dev),
2145                   (unsigned long) __entry->ino,
2146                   (unsigned) __entry->start,
2147                   (unsigned) __entry->ee_lblk,
2148                   (unsigned long long) __entry->ee_pblk,
2149                   (unsigned short) __entry->ee_len,
2150                   (long long) __entry->partial)
2151 );
2152
2153 TRACE_EVENT(ext4_ext_rm_idx,
2154         TP_PROTO(struct inode *inode, ext4_fsblk_t pblk),
2155
2156         TP_ARGS(inode, pblk),
2157
2158         TP_STRUCT__entry(
2159                 __field(        dev_t,          dev     )
2160                 __field(        ino_t,          ino     )
2161                 __field(        ext4_fsblk_t,   pblk    )
2162         ),
2163
2164         TP_fast_assign(
2165                 __entry->dev    = inode->i_sb->s_dev;
2166                 __entry->ino    = inode->i_ino;
2167                 __entry->pblk   = pblk;
2168         ),
2169
2170         TP_printk("dev %d,%d ino %lu index_pblk %llu",
2171                   MAJOR(__entry->dev), MINOR(__entry->dev),
2172                   (unsigned long) __entry->ino,
2173                   (unsigned long long) __entry->pblk)
2174 );
2175
2176 TRACE_EVENT(ext4_ext_remove_space,
2177         TP_PROTO(struct inode *inode, ext4_lblk_t start,
2178                  ext4_lblk_t end, int depth),
2179
2180         TP_ARGS(inode, start, end, depth),
2181
2182         TP_STRUCT__entry(
2183                 __field(        dev_t,          dev     )
2184                 __field(        ino_t,          ino     )
2185                 __field(        ext4_lblk_t,    start   )
2186                 __field(        ext4_lblk_t,    end     )
2187                 __field(        int,            depth   )
2188         ),
2189
2190         TP_fast_assign(
2191                 __entry->dev    = inode->i_sb->s_dev;
2192                 __entry->ino    = inode->i_ino;
2193                 __entry->start  = start;
2194                 __entry->end    = end;
2195                 __entry->depth  = depth;
2196         ),
2197
2198         TP_printk("dev %d,%d ino %lu since %u end %u depth %d",
2199                   MAJOR(__entry->dev), MINOR(__entry->dev),
2200                   (unsigned long) __entry->ino,
2201                   (unsigned) __entry->start,
2202                   (unsigned) __entry->end,
2203                   __entry->depth)
2204 );
2205
2206 TRACE_EVENT(ext4_ext_remove_space_done,
2207         TP_PROTO(struct inode *inode, ext4_lblk_t start, ext4_lblk_t end,
2208                  int depth, long long partial, __le16 eh_entries),
2209
2210         TP_ARGS(inode, start, end, depth, partial, eh_entries),
2211
2212         TP_STRUCT__entry(
2213                 __field(        dev_t,          dev             )
2214                 __field(        ino_t,          ino             )
2215                 __field(        ext4_lblk_t,    start           )
2216                 __field(        ext4_lblk_t,    end             )
2217                 __field(        int,            depth           )
2218                 __field(        long long,      partial         )
2219                 __field(        unsigned short, eh_entries      )
2220         ),
2221
2222         TP_fast_assign(
2223                 __entry->dev            = inode->i_sb->s_dev;
2224                 __entry->ino            = inode->i_ino;
2225                 __entry->start          = start;
2226                 __entry->end            = end;
2227                 __entry->depth          = depth;
2228                 __entry->partial        = partial;
2229                 __entry->eh_entries     = le16_to_cpu(eh_entries);
2230         ),
2231
2232         TP_printk("dev %d,%d ino %lu since %u end %u depth %d partial %lld "
2233                   "remaining_entries %u",
2234                   MAJOR(__entry->dev), MINOR(__entry->dev),
2235                   (unsigned long) __entry->ino,
2236                   (unsigned) __entry->start,
2237                   (unsigned) __entry->end,
2238                   __entry->depth,
2239                   (long long) __entry->partial,
2240                   (unsigned short) __entry->eh_entries)
2241 );
2242
2243 DECLARE_EVENT_CLASS(ext4__es_extent,
2244         TP_PROTO(struct inode *inode, struct extent_status *es),
2245
2246         TP_ARGS(inode, es),
2247
2248         TP_STRUCT__entry(
2249                 __field(        dev_t,          dev             )
2250                 __field(        ino_t,          ino             )
2251                 __field(        ext4_lblk_t,    lblk            )
2252                 __field(        ext4_lblk_t,    len             )
2253                 __field(        ext4_fsblk_t,   pblk            )
2254                 __field(        char, status    )
2255         ),
2256
2257         TP_fast_assign(
2258                 __entry->dev    = inode->i_sb->s_dev;
2259                 __entry->ino    = inode->i_ino;
2260                 __entry->lblk   = es->es_lblk;
2261                 __entry->len    = es->es_len;
2262                 __entry->pblk   = ext4_es_pblock(es);
2263                 __entry->status = ext4_es_status(es);
2264         ),
2265
2266         TP_printk("dev %d,%d ino %lu es [%u/%u) mapped %llu status %s",
2267                   MAJOR(__entry->dev), MINOR(__entry->dev),
2268                   (unsigned long) __entry->ino,
2269                   __entry->lblk, __entry->len,
2270                   __entry->pblk, show_extent_status(__entry->status))
2271 );
2272
2273 DEFINE_EVENT(ext4__es_extent, ext4_es_insert_extent,
2274         TP_PROTO(struct inode *inode, struct extent_status *es),
2275
2276         TP_ARGS(inode, es)
2277 );
2278
2279 DEFINE_EVENT(ext4__es_extent, ext4_es_cache_extent,
2280         TP_PROTO(struct inode *inode, struct extent_status *es),
2281
2282         TP_ARGS(inode, es)
2283 );
2284
2285 TRACE_EVENT(ext4_es_remove_extent,
2286         TP_PROTO(struct inode *inode, ext4_lblk_t lblk, ext4_lblk_t len),
2287
2288         TP_ARGS(inode, lblk, len),
2289
2290         TP_STRUCT__entry(
2291                 __field(        dev_t,  dev                     )
2292                 __field(        ino_t,  ino                     )
2293                 __field(        loff_t, lblk                    )
2294                 __field(        loff_t, len                     )
2295         ),
2296
2297         TP_fast_assign(
2298                 __entry->dev    = inode->i_sb->s_dev;
2299                 __entry->ino    = inode->i_ino;
2300                 __entry->lblk   = lblk;
2301                 __entry->len    = len;
2302         ),
2303
2304         TP_printk("dev %d,%d ino %lu es [%lld/%lld)",
2305                   MAJOR(__entry->dev), MINOR(__entry->dev),
2306                   (unsigned long) __entry->ino,
2307                   __entry->lblk, __entry->len)
2308 );
2309
2310 TRACE_EVENT(ext4_es_find_delayed_extent_range_enter,
2311         TP_PROTO(struct inode *inode, ext4_lblk_t lblk),
2312
2313         TP_ARGS(inode, lblk),
2314
2315         TP_STRUCT__entry(
2316                 __field(        dev_t,          dev             )
2317                 __field(        ino_t,          ino             )
2318                 __field(        ext4_lblk_t,    lblk            )
2319         ),
2320
2321         TP_fast_assign(
2322                 __entry->dev    = inode->i_sb->s_dev;
2323                 __entry->ino    = inode->i_ino;
2324                 __entry->lblk   = lblk;
2325         ),
2326
2327         TP_printk("dev %d,%d ino %lu lblk %u",
2328                   MAJOR(__entry->dev), MINOR(__entry->dev),
2329                   (unsigned long) __entry->ino, __entry->lblk)
2330 );
2331
2332 TRACE_EVENT(ext4_es_find_delayed_extent_range_exit,
2333         TP_PROTO(struct inode *inode, struct extent_status *es),
2334
2335         TP_ARGS(inode, es),
2336
2337         TP_STRUCT__entry(
2338                 __field(        dev_t,          dev             )
2339                 __field(        ino_t,          ino             )
2340                 __field(        ext4_lblk_t,    lblk            )
2341                 __field(        ext4_lblk_t,    len             )
2342                 __field(        ext4_fsblk_t,   pblk            )
2343                 __field(        char, status    )
2344         ),
2345
2346         TP_fast_assign(
2347                 __entry->dev    = inode->i_sb->s_dev;
2348                 __entry->ino    = inode->i_ino;
2349                 __entry->lblk   = es->es_lblk;
2350                 __entry->len    = es->es_len;
2351                 __entry->pblk   = ext4_es_pblock(es);
2352                 __entry->status = ext4_es_status(es);
2353         ),
2354
2355         TP_printk("dev %d,%d ino %lu es [%u/%u) mapped %llu status %s",
2356                   MAJOR(__entry->dev), MINOR(__entry->dev),
2357                   (unsigned long) __entry->ino,
2358                   __entry->lblk, __entry->len,
2359                   __entry->pblk, show_extent_status(__entry->status))
2360 );
2361
2362 TRACE_EVENT(ext4_es_lookup_extent_enter,
2363         TP_PROTO(struct inode *inode, ext4_lblk_t lblk),
2364
2365         TP_ARGS(inode, lblk),
2366
2367         TP_STRUCT__entry(
2368                 __field(        dev_t,          dev             )
2369                 __field(        ino_t,          ino             )
2370                 __field(        ext4_lblk_t,    lblk            )
2371         ),
2372
2373         TP_fast_assign(
2374                 __entry->dev    = inode->i_sb->s_dev;
2375                 __entry->ino    = inode->i_ino;
2376                 __entry->lblk   = lblk;
2377         ),
2378
2379         TP_printk("dev %d,%d ino %lu lblk %u",
2380                   MAJOR(__entry->dev), MINOR(__entry->dev),
2381                   (unsigned long) __entry->ino, __entry->lblk)
2382 );
2383
2384 TRACE_EVENT(ext4_es_lookup_extent_exit,
2385         TP_PROTO(struct inode *inode, struct extent_status *es,
2386                  int found),
2387
2388         TP_ARGS(inode, es, found),
2389
2390         TP_STRUCT__entry(
2391                 __field(        dev_t,          dev             )
2392                 __field(        ino_t,          ino             )
2393                 __field(        ext4_lblk_t,    lblk            )
2394                 __field(        ext4_lblk_t,    len             )
2395                 __field(        ext4_fsblk_t,   pblk            )
2396                 __field(        char,           status          )
2397                 __field(        int,            found           )
2398         ),
2399
2400         TP_fast_assign(
2401                 __entry->dev    = inode->i_sb->s_dev;
2402                 __entry->ino    = inode->i_ino;
2403                 __entry->lblk   = es->es_lblk;
2404                 __entry->len    = es->es_len;
2405                 __entry->pblk   = ext4_es_pblock(es);
2406                 __entry->status = ext4_es_status(es);
2407                 __entry->found  = found;
2408         ),
2409
2410         TP_printk("dev %d,%d ino %lu found %d [%u/%u) %llu %s",
2411                   MAJOR(__entry->dev), MINOR(__entry->dev),
2412                   (unsigned long) __entry->ino, __entry->found,
2413                   __entry->lblk, __entry->len,
2414                   __entry->found ? __entry->pblk : 0,
2415                   show_extent_status(__entry->found ? __entry->status : 0))
2416 );
2417
2418 DECLARE_EVENT_CLASS(ext4__es_shrink_enter,
2419         TP_PROTO(struct super_block *sb, int nr_to_scan, int cache_cnt),
2420
2421         TP_ARGS(sb, nr_to_scan, cache_cnt),
2422
2423         TP_STRUCT__entry(
2424                 __field(        dev_t,  dev                     )
2425                 __field(        int,    nr_to_scan              )
2426                 __field(        int,    cache_cnt               )
2427         ),
2428
2429         TP_fast_assign(
2430                 __entry->dev            = sb->s_dev;
2431                 __entry->nr_to_scan     = nr_to_scan;
2432                 __entry->cache_cnt      = cache_cnt;
2433         ),
2434
2435         TP_printk("dev %d,%d nr_to_scan %d cache_cnt %d",
2436                   MAJOR(__entry->dev), MINOR(__entry->dev),
2437                   __entry->nr_to_scan, __entry->cache_cnt)
2438 );
2439
2440 DEFINE_EVENT(ext4__es_shrink_enter, ext4_es_shrink_count,
2441         TP_PROTO(struct super_block *sb, int nr_to_scan, int cache_cnt),
2442
2443         TP_ARGS(sb, nr_to_scan, cache_cnt)
2444 );
2445
2446 DEFINE_EVENT(ext4__es_shrink_enter, ext4_es_shrink_scan_enter,
2447         TP_PROTO(struct super_block *sb, int nr_to_scan, int cache_cnt),
2448
2449         TP_ARGS(sb, nr_to_scan, cache_cnt)
2450 );
2451
2452 TRACE_EVENT(ext4_es_shrink_scan_exit,
2453         TP_PROTO(struct super_block *sb, int nr_shrunk, int cache_cnt),
2454
2455         TP_ARGS(sb, nr_shrunk, cache_cnt),
2456
2457         TP_STRUCT__entry(
2458                 __field(        dev_t,  dev                     )
2459                 __field(        int,    nr_shrunk               )
2460                 __field(        int,    cache_cnt               )
2461         ),
2462
2463         TP_fast_assign(
2464                 __entry->dev            = sb->s_dev;
2465                 __entry->nr_shrunk      = nr_shrunk;
2466                 __entry->cache_cnt      = cache_cnt;
2467         ),
2468
2469         TP_printk("dev %d,%d nr_shrunk %d cache_cnt %d",
2470                   MAJOR(__entry->dev), MINOR(__entry->dev),
2471                   __entry->nr_shrunk, __entry->cache_cnt)
2472 );
2473
2474 TRACE_EVENT(ext4_collapse_range,
2475         TP_PROTO(struct inode *inode, loff_t offset, loff_t len),
2476
2477         TP_ARGS(inode, offset, len),
2478
2479         TP_STRUCT__entry(
2480                 __field(dev_t,  dev)
2481                 __field(ino_t,  ino)
2482                 __field(loff_t, offset)
2483                 __field(loff_t, len)
2484         ),
2485
2486         TP_fast_assign(
2487                 __entry->dev    = inode->i_sb->s_dev;
2488                 __entry->ino    = inode->i_ino;
2489                 __entry->offset = offset;
2490                 __entry->len    = len;
2491         ),
2492
2493         TP_printk("dev %d,%d ino %lu offset %lld len %lld",
2494                   MAJOR(__entry->dev), MINOR(__entry->dev),
2495                   (unsigned long) __entry->ino,
2496                   __entry->offset, __entry->len)
2497 );
2498
2499 TRACE_EVENT(ext4_insert_range,
2500         TP_PROTO(struct inode *inode, loff_t offset, loff_t len),
2501
2502         TP_ARGS(inode, offset, len),
2503
2504         TP_STRUCT__entry(
2505                 __field(dev_t,  dev)
2506                 __field(ino_t,  ino)
2507                 __field(loff_t, offset)
2508                 __field(loff_t, len)
2509         ),
2510
2511         TP_fast_assign(
2512                 __entry->dev    = inode->i_sb->s_dev;
2513                 __entry->ino    = inode->i_ino;
2514                 __entry->offset = offset;
2515                 __entry->len    = len;
2516         ),
2517
2518         TP_printk("dev %d,%d ino %lu offset %lld len %lld",
2519                   MAJOR(__entry->dev), MINOR(__entry->dev),
2520                   (unsigned long) __entry->ino,
2521                   __entry->offset, __entry->len)
2522 );
2523
2524 TRACE_EVENT(ext4_es_shrink,
2525         TP_PROTO(struct super_block *sb, int nr_shrunk, u64 scan_time,
2526                  int nr_skipped, int retried),
2527
2528         TP_ARGS(sb, nr_shrunk, scan_time, nr_skipped, retried),
2529
2530         TP_STRUCT__entry(
2531                 __field(        dev_t,          dev             )
2532                 __field(        int,            nr_shrunk       )
2533                 __field(        unsigned long long, scan_time   )
2534                 __field(        int,            nr_skipped      )
2535                 __field(        int,            retried         )
2536         ),
2537
2538         TP_fast_assign(
2539                 __entry->dev            = sb->s_dev;
2540                 __entry->nr_shrunk      = nr_shrunk;
2541                 __entry->scan_time      = div_u64(scan_time, 1000);
2542                 __entry->nr_skipped     = nr_skipped;
2543                 __entry->retried        = retried;
2544         ),
2545
2546         TP_printk("dev %d,%d nr_shrunk %d, scan_time %llu "
2547                   "nr_skipped %d retried %d",
2548                   MAJOR(__entry->dev), MINOR(__entry->dev), __entry->nr_shrunk,
2549                   __entry->scan_time, __entry->nr_skipped, __entry->retried)
2550 );
2551
2552 #endif /* _TRACE_EXT4_H */
2553
2554 /* This part must be outside protection */
2555 #include <trace/define_trace.h>