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