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