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