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_prealloc_space; 13 struct ext4_inode_info; 14 struct mpage_da_data; 15 16 #define EXT4_I(inode) (container_of(inode, struct ext4_inode_info, vfs_inode)) 17 18 TRACE_EVENT(ext4_free_inode, 19 TP_PROTO(struct inode *inode), 20 21 TP_ARGS(inode), 22 23 TP_STRUCT__entry( 24 __field( dev_t, dev ) 25 __field( ino_t, ino ) 26 __field( umode_t, mode ) 27 __field( uid_t, uid ) 28 __field( gid_t, gid ) 29 __field( blkcnt_t, blocks ) 30 ), 31 32 TP_fast_assign( 33 __entry->dev = inode->i_sb->s_dev; 34 __entry->ino = inode->i_ino; 35 __entry->mode = inode->i_mode; 36 __entry->uid = inode->i_uid; 37 __entry->gid = inode->i_gid; 38 __entry->blocks = inode->i_blocks; 39 ), 40 41 TP_printk("dev %d,%d ino %lu mode 0%o uid %u gid %u blocks %llu", 42 MAJOR(__entry->dev), MINOR(__entry->dev), 43 (unsigned long) __entry->ino, 44 __entry->mode, __entry->uid, __entry->gid, 45 (unsigned long long) __entry->blocks) 46 ); 47 48 TRACE_EVENT(ext4_request_inode, 49 TP_PROTO(struct inode *dir, int mode), 50 51 TP_ARGS(dir, mode), 52 53 TP_STRUCT__entry( 54 __field( dev_t, dev ) 55 __field( ino_t, dir ) 56 __field( umode_t, mode ) 57 ), 58 59 TP_fast_assign( 60 __entry->dev = dir->i_sb->s_dev; 61 __entry->dir = dir->i_ino; 62 __entry->mode = mode; 63 ), 64 65 TP_printk("dev %d,%d dir %lu mode 0%o", 66 MAJOR(__entry->dev), MINOR(__entry->dev), 67 (unsigned long) __entry->dir, __entry->mode) 68 ); 69 70 TRACE_EVENT(ext4_allocate_inode, 71 TP_PROTO(struct inode *inode, struct inode *dir, int mode), 72 73 TP_ARGS(inode, dir, mode), 74 75 TP_STRUCT__entry( 76 __field( dev_t, dev ) 77 __field( ino_t, ino ) 78 __field( ino_t, dir ) 79 __field( umode_t, mode ) 80 ), 81 82 TP_fast_assign( 83 __entry->dev = inode->i_sb->s_dev; 84 __entry->ino = inode->i_ino; 85 __entry->dir = dir->i_ino; 86 __entry->mode = mode; 87 ), 88 89 TP_printk("dev %d,%d ino %lu dir %lu mode 0%o", 90 MAJOR(__entry->dev), MINOR(__entry->dev), 91 (unsigned long) __entry->ino, 92 (unsigned long) __entry->dir, __entry->mode) 93 ); 94 95 TRACE_EVENT(ext4_evict_inode, 96 TP_PROTO(struct inode *inode), 97 98 TP_ARGS(inode), 99 100 TP_STRUCT__entry( 101 __field( dev_t, dev ) 102 __field( ino_t, ino ) 103 __field( int, nlink ) 104 ), 105 106 TP_fast_assign( 107 __entry->dev = inode->i_sb->s_dev; 108 __entry->ino = inode->i_ino; 109 __entry->nlink = inode->i_nlink; 110 ), 111 112 TP_printk("dev %d,%d ino %lu nlink %d", 113 MAJOR(__entry->dev), MINOR(__entry->dev), 114 (unsigned long) __entry->ino, __entry->nlink) 115 ); 116 117 TRACE_EVENT(ext4_drop_inode, 118 TP_PROTO(struct inode *inode, int drop), 119 120 TP_ARGS(inode, drop), 121 122 TP_STRUCT__entry( 123 __field( dev_t, dev ) 124 __field( ino_t, ino ) 125 __field( int, drop ) 126 ), 127 128 TP_fast_assign( 129 __entry->dev = inode->i_sb->s_dev; 130 __entry->ino = inode->i_ino; 131 __entry->drop = drop; 132 ), 133 134 TP_printk("dev %d,%d ino %lu drop %d", 135 MAJOR(__entry->dev), MINOR(__entry->dev), 136 (unsigned long) __entry->ino, __entry->drop) 137 ); 138 139 TRACE_EVENT(ext4_mark_inode_dirty, 140 TP_PROTO(struct inode *inode, unsigned long IP), 141 142 TP_ARGS(inode, IP), 143 144 TP_STRUCT__entry( 145 __field( dev_t, dev ) 146 __field( ino_t, ino ) 147 __field(unsigned long, ip ) 148 ), 149 150 TP_fast_assign( 151 __entry->dev = inode->i_sb->s_dev; 152 __entry->ino = inode->i_ino; 153 __entry->ip = IP; 154 ), 155 156 TP_printk("dev %d,%d ino %lu caller %pF", 157 MAJOR(__entry->dev), MINOR(__entry->dev), 158 (unsigned long) __entry->ino, (void *)__entry->ip) 159 ); 160 161 TRACE_EVENT(ext4_begin_ordered_truncate, 162 TP_PROTO(struct inode *inode, loff_t new_size), 163 164 TP_ARGS(inode, new_size), 165 166 TP_STRUCT__entry( 167 __field( dev_t, dev ) 168 __field( ino_t, ino ) 169 __field( loff_t, new_size ) 170 ), 171 172 TP_fast_assign( 173 __entry->dev = inode->i_sb->s_dev; 174 __entry->ino = inode->i_ino; 175 __entry->new_size = new_size; 176 ), 177 178 TP_printk("dev %d,%d ino %lu new_size %lld", 179 MAJOR(__entry->dev), MINOR(__entry->dev), 180 (unsigned long) __entry->ino, 181 (long long) __entry->new_size) 182 ); 183 184 DECLARE_EVENT_CLASS(ext4__write_begin, 185 186 TP_PROTO(struct inode *inode, loff_t pos, unsigned int len, 187 unsigned int flags), 188 189 TP_ARGS(inode, pos, len, flags), 190 191 TP_STRUCT__entry( 192 __field( dev_t, dev ) 193 __field( ino_t, ino ) 194 __field( loff_t, pos ) 195 __field( unsigned int, len ) 196 __field( unsigned int, flags ) 197 ), 198 199 TP_fast_assign( 200 __entry->dev = inode->i_sb->s_dev; 201 __entry->ino = inode->i_ino; 202 __entry->pos = pos; 203 __entry->len = len; 204 __entry->flags = flags; 205 ), 206 207 TP_printk("dev %d,%d ino %lu pos %llu len %u flags %u", 208 MAJOR(__entry->dev), MINOR(__entry->dev), 209 (unsigned long) __entry->ino, 210 __entry->pos, __entry->len, __entry->flags) 211 ); 212 213 DEFINE_EVENT(ext4__write_begin, ext4_write_begin, 214 215 TP_PROTO(struct inode *inode, loff_t pos, unsigned int len, 216 unsigned int flags), 217 218 TP_ARGS(inode, pos, len, flags) 219 ); 220 221 DEFINE_EVENT(ext4__write_begin, ext4_da_write_begin, 222 223 TP_PROTO(struct inode *inode, loff_t pos, unsigned int len, 224 unsigned int flags), 225 226 TP_ARGS(inode, pos, len, flags) 227 ); 228 229 DECLARE_EVENT_CLASS(ext4__write_end, 230 TP_PROTO(struct inode *inode, loff_t pos, unsigned int len, 231 unsigned int copied), 232 233 TP_ARGS(inode, pos, len, copied), 234 235 TP_STRUCT__entry( 236 __field( dev_t, dev ) 237 __field( ino_t, ino ) 238 __field( loff_t, pos ) 239 __field( unsigned int, len ) 240 __field( unsigned int, copied ) 241 ), 242 243 TP_fast_assign( 244 __entry->dev = inode->i_sb->s_dev; 245 __entry->ino = inode->i_ino; 246 __entry->pos = pos; 247 __entry->len = len; 248 __entry->copied = copied; 249 ), 250 251 TP_printk("dev %d,%d ino %lu pos %llu len %u copied %u", 252 MAJOR(__entry->dev), MINOR(__entry->dev), 253 (unsigned long) __entry->ino, 254 __entry->pos, __entry->len, __entry->copied) 255 ); 256 257 DEFINE_EVENT(ext4__write_end, ext4_ordered_write_end, 258 259 TP_PROTO(struct inode *inode, loff_t pos, unsigned int len, 260 unsigned int copied), 261 262 TP_ARGS(inode, pos, len, copied) 263 ); 264 265 DEFINE_EVENT(ext4__write_end, ext4_writeback_write_end, 266 267 TP_PROTO(struct inode *inode, loff_t pos, unsigned int len, 268 unsigned int copied), 269 270 TP_ARGS(inode, pos, len, copied) 271 ); 272 273 DEFINE_EVENT(ext4__write_end, ext4_journalled_write_end, 274 275 TP_PROTO(struct inode *inode, loff_t pos, unsigned int len, 276 unsigned int copied), 277 278 TP_ARGS(inode, pos, len, copied) 279 ); 280 281 DEFINE_EVENT(ext4__write_end, ext4_da_write_end, 282 283 TP_PROTO(struct inode *inode, loff_t pos, unsigned int len, 284 unsigned int copied), 285 286 TP_ARGS(inode, pos, len, copied) 287 ); 288 289 TRACE_EVENT(ext4_writepage, 290 TP_PROTO(struct inode *inode, struct page *page), 291 292 TP_ARGS(inode, page), 293 294 TP_STRUCT__entry( 295 __field( dev_t, dev ) 296 __field( ino_t, ino ) 297 __field( pgoff_t, index ) 298 299 ), 300 301 TP_fast_assign( 302 __entry->dev = inode->i_sb->s_dev; 303 __entry->ino = inode->i_ino; 304 __entry->index = page->index; 305 ), 306 307 TP_printk("dev %d,%d ino %lu page_index %lu", 308 MAJOR(__entry->dev), MINOR(__entry->dev), 309 (unsigned long) __entry->ino, __entry->index) 310 ); 311 312 TRACE_EVENT(ext4_da_writepages, 313 TP_PROTO(struct inode *inode, struct writeback_control *wbc), 314 315 TP_ARGS(inode, wbc), 316 317 TP_STRUCT__entry( 318 __field( dev_t, dev ) 319 __field( ino_t, ino ) 320 __field( long, nr_to_write ) 321 __field( long, pages_skipped ) 322 __field( loff_t, range_start ) 323 __field( loff_t, range_end ) 324 __field( int, sync_mode ) 325 __field( char, for_kupdate ) 326 __field( char, range_cyclic ) 327 __field( pgoff_t, writeback_index ) 328 ), 329 330 TP_fast_assign( 331 __entry->dev = inode->i_sb->s_dev; 332 __entry->ino = inode->i_ino; 333 __entry->nr_to_write = wbc->nr_to_write; 334 __entry->pages_skipped = wbc->pages_skipped; 335 __entry->range_start = wbc->range_start; 336 __entry->range_end = wbc->range_end; 337 __entry->sync_mode = wbc->sync_mode; 338 __entry->for_kupdate = wbc->for_kupdate; 339 __entry->range_cyclic = wbc->range_cyclic; 340 __entry->writeback_index = inode->i_mapping->writeback_index; 341 ), 342 343 TP_printk("dev %d,%d ino %lu nr_to_write %ld pages_skipped %ld " 344 "range_start %llu range_end %llu sync_mode %d" 345 "for_kupdate %d range_cyclic %d writeback_index %lu", 346 MAJOR(__entry->dev), MINOR(__entry->dev), 347 (unsigned long) __entry->ino, __entry->nr_to_write, 348 __entry->pages_skipped, __entry->range_start, 349 __entry->range_end, __entry->sync_mode, 350 __entry->for_kupdate, __entry->range_cyclic, 351 (unsigned long) __entry->writeback_index) 352 ); 353 354 TRACE_EVENT(ext4_da_write_pages, 355 TP_PROTO(struct inode *inode, struct mpage_da_data *mpd), 356 357 TP_ARGS(inode, mpd), 358 359 TP_STRUCT__entry( 360 __field( dev_t, dev ) 361 __field( ino_t, ino ) 362 __field( __u64, b_blocknr ) 363 __field( __u32, b_size ) 364 __field( __u32, b_state ) 365 __field( unsigned long, first_page ) 366 __field( int, io_done ) 367 __field( int, pages_written ) 368 __field( int, sync_mode ) 369 ), 370 371 TP_fast_assign( 372 __entry->dev = inode->i_sb->s_dev; 373 __entry->ino = inode->i_ino; 374 __entry->b_blocknr = mpd->b_blocknr; 375 __entry->b_size = mpd->b_size; 376 __entry->b_state = mpd->b_state; 377 __entry->first_page = mpd->first_page; 378 __entry->io_done = mpd->io_done; 379 __entry->pages_written = mpd->pages_written; 380 __entry->sync_mode = mpd->wbc->sync_mode; 381 ), 382 383 TP_printk("dev %d,%d ino %lu b_blocknr %llu b_size %u b_state 0x%04x " 384 "first_page %lu io_done %d pages_written %d sync_mode %d", 385 MAJOR(__entry->dev), MINOR(__entry->dev), 386 (unsigned long) __entry->ino, 387 __entry->b_blocknr, __entry->b_size, 388 __entry->b_state, __entry->first_page, 389 __entry->io_done, __entry->pages_written, 390 __entry->sync_mode 391 ) 392 ); 393 394 TRACE_EVENT(ext4_da_writepages_result, 395 TP_PROTO(struct inode *inode, struct writeback_control *wbc, 396 int ret, int pages_written), 397 398 TP_ARGS(inode, wbc, ret, pages_written), 399 400 TP_STRUCT__entry( 401 __field( dev_t, dev ) 402 __field( ino_t, ino ) 403 __field( int, ret ) 404 __field( int, pages_written ) 405 __field( long, pages_skipped ) 406 __field( int, sync_mode ) 407 __field( char, more_io ) 408 __field( pgoff_t, writeback_index ) 409 ), 410 411 TP_fast_assign( 412 __entry->dev = inode->i_sb->s_dev; 413 __entry->ino = inode->i_ino; 414 __entry->ret = ret; 415 __entry->pages_written = pages_written; 416 __entry->pages_skipped = wbc->pages_skipped; 417 __entry->sync_mode = wbc->sync_mode; 418 __entry->more_io = wbc->more_io; 419 __entry->writeback_index = inode->i_mapping->writeback_index; 420 ), 421 422 TP_printk("dev %d,%d ino %lu ret %d pages_written %d pages_skipped %ld " 423 " more_io %d sync_mode %d writeback_index %lu", 424 MAJOR(__entry->dev), MINOR(__entry->dev), 425 (unsigned long) __entry->ino, __entry->ret, 426 __entry->pages_written, __entry->pages_skipped, 427 __entry->more_io, __entry->sync_mode, 428 (unsigned long) __entry->writeback_index) 429 ); 430 431 DECLARE_EVENT_CLASS(ext4__page_op, 432 TP_PROTO(struct page *page), 433 434 TP_ARGS(page), 435 436 TP_STRUCT__entry( 437 __field( pgoff_t, index ) 438 __field( ino_t, ino ) 439 __field( dev_t, dev ) 440 441 ), 442 443 TP_fast_assign( 444 __entry->index = page->index; 445 __entry->ino = page->mapping->host->i_ino; 446 __entry->dev = page->mapping->host->i_sb->s_dev; 447 ), 448 449 TP_printk("dev %d,%d ino %lu page_index %lu", 450 MAJOR(__entry->dev), MINOR(__entry->dev), 451 (unsigned long) __entry->ino, 452 __entry->index) 453 ); 454 455 DEFINE_EVENT(ext4__page_op, ext4_readpage, 456 457 TP_PROTO(struct page *page), 458 459 TP_ARGS(page) 460 ); 461 462 DEFINE_EVENT(ext4__page_op, ext4_releasepage, 463 464 TP_PROTO(struct page *page), 465 466 TP_ARGS(page) 467 ); 468 469 TRACE_EVENT(ext4_invalidatepage, 470 TP_PROTO(struct page *page, unsigned long offset), 471 472 TP_ARGS(page, offset), 473 474 TP_STRUCT__entry( 475 __field( pgoff_t, index ) 476 __field( unsigned long, offset ) 477 __field( ino_t, ino ) 478 __field( dev_t, dev ) 479 480 ), 481 482 TP_fast_assign( 483 __entry->index = page->index; 484 __entry->offset = offset; 485 __entry->ino = page->mapping->host->i_ino; 486 __entry->dev = page->mapping->host->i_sb->s_dev; 487 ), 488 489 TP_printk("dev %d,%d ino %lu page_index %lu offset %lu", 490 MAJOR(__entry->dev), MINOR(__entry->dev), 491 (unsigned long) __entry->ino, 492 __entry->index, __entry->offset) 493 ); 494 495 TRACE_EVENT(ext4_discard_blocks, 496 TP_PROTO(struct super_block *sb, unsigned long long blk, 497 unsigned long long count), 498 499 TP_ARGS(sb, blk, count), 500 501 TP_STRUCT__entry( 502 __field( dev_t, dev ) 503 __field( __u64, blk ) 504 __field( __u64, count ) 505 506 ), 507 508 TP_fast_assign( 509 __entry->dev = sb->s_dev; 510 __entry->blk = blk; 511 __entry->count = count; 512 ), 513 514 TP_printk("dev %d,%d blk %llu count %llu", 515 MAJOR(__entry->dev), MINOR(__entry->dev), 516 __entry->blk, __entry->count) 517 ); 518 519 DECLARE_EVENT_CLASS(ext4__mb_new_pa, 520 TP_PROTO(struct ext4_allocation_context *ac, 521 struct ext4_prealloc_space *pa), 522 523 TP_ARGS(ac, pa), 524 525 TP_STRUCT__entry( 526 __field( dev_t, dev ) 527 __field( ino_t, ino ) 528 __field( __u64, pa_pstart ) 529 __field( __u32, pa_len ) 530 __field( __u64, pa_lstart ) 531 532 ), 533 534 TP_fast_assign( 535 __entry->dev = ac->ac_sb->s_dev; 536 __entry->ino = ac->ac_inode->i_ino; 537 __entry->pa_pstart = pa->pa_pstart; 538 __entry->pa_len = pa->pa_len; 539 __entry->pa_lstart = pa->pa_lstart; 540 ), 541 542 TP_printk("dev %d,%d ino %lu pstart %llu len %u lstart %llu", 543 MAJOR(__entry->dev), MINOR(__entry->dev), 544 (unsigned long) __entry->ino, 545 __entry->pa_pstart, __entry->pa_len, __entry->pa_lstart) 546 ); 547 548 DEFINE_EVENT(ext4__mb_new_pa, ext4_mb_new_inode_pa, 549 550 TP_PROTO(struct ext4_allocation_context *ac, 551 struct ext4_prealloc_space *pa), 552 553 TP_ARGS(ac, pa) 554 ); 555 556 DEFINE_EVENT(ext4__mb_new_pa, ext4_mb_new_group_pa, 557 558 TP_PROTO(struct ext4_allocation_context *ac, 559 struct ext4_prealloc_space *pa), 560 561 TP_ARGS(ac, pa) 562 ); 563 564 TRACE_EVENT(ext4_mb_release_inode_pa, 565 TP_PROTO(struct super_block *sb, 566 struct inode *inode, 567 struct ext4_prealloc_space *pa, 568 unsigned long long block, unsigned int count), 569 570 TP_ARGS(sb, inode, pa, block, count), 571 572 TP_STRUCT__entry( 573 __field( dev_t, dev ) 574 __field( ino_t, ino ) 575 __field( __u64, block ) 576 __field( __u32, count ) 577 578 ), 579 580 TP_fast_assign( 581 __entry->dev = sb->s_dev; 582 __entry->ino = inode->i_ino; 583 __entry->block = block; 584 __entry->count = count; 585 ), 586 587 TP_printk("dev %d,%d ino %lu block %llu count %u", 588 MAJOR(__entry->dev), MINOR(__entry->dev), 589 (unsigned long) __entry->ino, 590 __entry->block, __entry->count) 591 ); 592 593 TRACE_EVENT(ext4_mb_release_group_pa, 594 TP_PROTO(struct super_block *sb, 595 struct ext4_prealloc_space *pa), 596 597 TP_ARGS(sb, pa), 598 599 TP_STRUCT__entry( 600 __field( dev_t, dev ) 601 __field( __u64, pa_pstart ) 602 __field( __u32, pa_len ) 603 604 ), 605 606 TP_fast_assign( 607 __entry->dev = sb->s_dev; 608 __entry->pa_pstart = pa->pa_pstart; 609 __entry->pa_len = pa->pa_len; 610 ), 611 612 TP_printk("dev %d,%d pstart %llu len %u", 613 MAJOR(__entry->dev), MINOR(__entry->dev), 614 __entry->pa_pstart, __entry->pa_len) 615 ); 616 617 TRACE_EVENT(ext4_discard_preallocations, 618 TP_PROTO(struct inode *inode), 619 620 TP_ARGS(inode), 621 622 TP_STRUCT__entry( 623 __field( dev_t, dev ) 624 __field( ino_t, ino ) 625 626 ), 627 628 TP_fast_assign( 629 __entry->dev = inode->i_sb->s_dev; 630 __entry->ino = inode->i_ino; 631 ), 632 633 TP_printk("dev %d,%d ino %lu", 634 MAJOR(__entry->dev), MINOR(__entry->dev), 635 (unsigned long) __entry->ino) 636 ); 637 638 TRACE_EVENT(ext4_mb_discard_preallocations, 639 TP_PROTO(struct super_block *sb, int needed), 640 641 TP_ARGS(sb, needed), 642 643 TP_STRUCT__entry( 644 __field( dev_t, dev ) 645 __field( int, needed ) 646 647 ), 648 649 TP_fast_assign( 650 __entry->dev = sb->s_dev; 651 __entry->needed = needed; 652 ), 653 654 TP_printk("dev %d,%d needed %d", 655 MAJOR(__entry->dev), MINOR(__entry->dev), 656 __entry->needed) 657 ); 658 659 TRACE_EVENT(ext4_request_blocks, 660 TP_PROTO(struct ext4_allocation_request *ar), 661 662 TP_ARGS(ar), 663 664 TP_STRUCT__entry( 665 __field( dev_t, dev ) 666 __field( ino_t, ino ) 667 __field( unsigned int, flags ) 668 __field( unsigned int, len ) 669 __field( __u64, logical ) 670 __field( __u64, goal ) 671 __field( __u64, lleft ) 672 __field( __u64, lright ) 673 __field( __u64, pleft ) 674 __field( __u64, pright ) 675 ), 676 677 TP_fast_assign( 678 __entry->dev = ar->inode->i_sb->s_dev; 679 __entry->ino = ar->inode->i_ino; 680 __entry->flags = ar->flags; 681 __entry->len = ar->len; 682 __entry->logical = ar->logical; 683 __entry->goal = ar->goal; 684 __entry->lleft = ar->lleft; 685 __entry->lright = ar->lright; 686 __entry->pleft = ar->pleft; 687 __entry->pright = ar->pright; 688 ), 689 690 TP_printk("dev %d,%d ino %lu flags %u len %u lblk %llu goal %llu " 691 "lleft %llu lright %llu pleft %llu pright %llu ", 692 MAJOR(__entry->dev), MINOR(__entry->dev), 693 (unsigned long) __entry->ino, 694 __entry->flags, __entry->len, 695 (unsigned long long) __entry->logical, 696 (unsigned long long) __entry->goal, 697 (unsigned long long) __entry->lleft, 698 (unsigned long long) __entry->lright, 699 (unsigned long long) __entry->pleft, 700 (unsigned long long) __entry->pright) 701 ); 702 703 TRACE_EVENT(ext4_allocate_blocks, 704 TP_PROTO(struct ext4_allocation_request *ar, unsigned long long block), 705 706 TP_ARGS(ar, block), 707 708 TP_STRUCT__entry( 709 __field( dev_t, dev ) 710 __field( ino_t, ino ) 711 __field( __u64, block ) 712 __field( unsigned int, flags ) 713 __field( unsigned int, len ) 714 __field( __u64, logical ) 715 __field( __u64, goal ) 716 __field( __u64, lleft ) 717 __field( __u64, lright ) 718 __field( __u64, pleft ) 719 __field( __u64, pright ) 720 ), 721 722 TP_fast_assign( 723 __entry->dev = ar->inode->i_sb->s_dev; 724 __entry->ino = ar->inode->i_ino; 725 __entry->block = block; 726 __entry->flags = ar->flags; 727 __entry->len = ar->len; 728 __entry->logical = ar->logical; 729 __entry->goal = ar->goal; 730 __entry->lleft = ar->lleft; 731 __entry->lright = ar->lright; 732 __entry->pleft = ar->pleft; 733 __entry->pright = ar->pright; 734 ), 735 736 TP_printk("dev %d,%d ino %lu flags %u len %u block %llu lblk %llu " 737 "goal %llu lleft %llu lright %llu pleft %llu pright %llu", 738 MAJOR(__entry->dev), MINOR(__entry->dev), 739 (unsigned long) __entry->ino, 740 __entry->flags, __entry->len, __entry->block, 741 (unsigned long long) __entry->logical, 742 (unsigned long long) __entry->goal, 743 (unsigned long long) __entry->lleft, 744 (unsigned long long) __entry->lright, 745 (unsigned long long) __entry->pleft, 746 (unsigned long long) __entry->pright) 747 ); 748 749 TRACE_EVENT(ext4_free_blocks, 750 TP_PROTO(struct inode *inode, __u64 block, unsigned long count, 751 int flags), 752 753 TP_ARGS(inode, block, count, flags), 754 755 TP_STRUCT__entry( 756 __field( dev_t, dev ) 757 __field( ino_t, ino ) 758 __field( umode_t, mode ) 759 __field( __u64, block ) 760 __field( unsigned long, count ) 761 __field( int, flags ) 762 ), 763 764 TP_fast_assign( 765 __entry->dev = inode->i_sb->s_dev; 766 __entry->ino = inode->i_ino; 767 __entry->mode = inode->i_mode; 768 __entry->block = block; 769 __entry->count = count; 770 __entry->flags = flags; 771 ), 772 773 TP_printk("dev %d,%d ino %lu mode 0%o block %llu count %lu flags %d", 774 MAJOR(__entry->dev), MINOR(__entry->dev), 775 (unsigned long) __entry->ino, 776 __entry->mode, __entry->block, __entry->count, 777 __entry->flags) 778 ); 779 780 TRACE_EVENT(ext4_sync_file_enter, 781 TP_PROTO(struct file *file, int datasync), 782 783 TP_ARGS(file, datasync), 784 785 TP_STRUCT__entry( 786 __field( dev_t, dev ) 787 __field( ino_t, ino ) 788 __field( ino_t, parent ) 789 __field( int, datasync ) 790 ), 791 792 TP_fast_assign( 793 struct dentry *dentry = file->f_path.dentry; 794 795 __entry->dev = dentry->d_inode->i_sb->s_dev; 796 __entry->ino = dentry->d_inode->i_ino; 797 __entry->datasync = datasync; 798 __entry->parent = dentry->d_parent->d_inode->i_ino; 799 ), 800 801 TP_printk("dev %d,%d ino %ld parent %ld datasync %d ", 802 MAJOR(__entry->dev), MINOR(__entry->dev), 803 (unsigned long) __entry->ino, 804 (unsigned long) __entry->parent, __entry->datasync) 805 ); 806 807 TRACE_EVENT(ext4_sync_file_exit, 808 TP_PROTO(struct inode *inode, int ret), 809 810 TP_ARGS(inode, ret), 811 812 TP_STRUCT__entry( 813 __field( int, ret ) 814 __field( ino_t, ino ) 815 __field( dev_t, dev ) 816 ), 817 818 TP_fast_assign( 819 __entry->ret = ret; 820 __entry->ino = inode->i_ino; 821 __entry->dev = inode->i_sb->s_dev; 822 ), 823 824 TP_printk("dev %d,%d ino %ld ret %d", 825 MAJOR(__entry->dev), MINOR(__entry->dev), 826 (unsigned long) __entry->ino, 827 __entry->ret) 828 ); 829 830 TRACE_EVENT(ext4_sync_fs, 831 TP_PROTO(struct super_block *sb, int wait), 832 833 TP_ARGS(sb, wait), 834 835 TP_STRUCT__entry( 836 __field( dev_t, dev ) 837 __field( int, wait ) 838 839 ), 840 841 TP_fast_assign( 842 __entry->dev = sb->s_dev; 843 __entry->wait = wait; 844 ), 845 846 TP_printk("dev %d,%d wait %d", 847 MAJOR(__entry->dev), MINOR(__entry->dev), 848 __entry->wait) 849 ); 850 851 TRACE_EVENT(ext4_alloc_da_blocks, 852 TP_PROTO(struct inode *inode), 853 854 TP_ARGS(inode), 855 856 TP_STRUCT__entry( 857 __field( dev_t, dev ) 858 __field( ino_t, ino ) 859 __field( unsigned int, data_blocks ) 860 __field( unsigned int, meta_blocks ) 861 ), 862 863 TP_fast_assign( 864 __entry->dev = inode->i_sb->s_dev; 865 __entry->ino = inode->i_ino; 866 __entry->data_blocks = EXT4_I(inode)->i_reserved_data_blocks; 867 __entry->meta_blocks = EXT4_I(inode)->i_reserved_meta_blocks; 868 ), 869 870 TP_printk("dev %d,%d ino %lu data_blocks %u meta_blocks %u", 871 MAJOR(__entry->dev), MINOR(__entry->dev), 872 (unsigned long) __entry->ino, 873 __entry->data_blocks, __entry->meta_blocks) 874 ); 875 876 TRACE_EVENT(ext4_mballoc_alloc, 877 TP_PROTO(struct ext4_allocation_context *ac), 878 879 TP_ARGS(ac), 880 881 TP_STRUCT__entry( 882 __field( dev_t, dev ) 883 __field( ino_t, ino ) 884 __field( __u16, found ) 885 __field( __u16, groups ) 886 __field( __u16, buddy ) 887 __field( __u16, flags ) 888 __field( __u16, tail ) 889 __field( __u8, cr ) 890 __field( __u32, orig_logical ) 891 __field( int, orig_start ) 892 __field( __u32, orig_group ) 893 __field( int, orig_len ) 894 __field( __u32, goal_logical ) 895 __field( int, goal_start ) 896 __field( __u32, goal_group ) 897 __field( int, goal_len ) 898 __field( __u32, result_logical ) 899 __field( int, result_start ) 900 __field( __u32, result_group ) 901 __field( int, result_len ) 902 ), 903 904 TP_fast_assign( 905 __entry->dev = ac->ac_inode->i_sb->s_dev; 906 __entry->ino = ac->ac_inode->i_ino; 907 __entry->found = ac->ac_found; 908 __entry->flags = ac->ac_flags; 909 __entry->groups = ac->ac_groups_scanned; 910 __entry->buddy = ac->ac_buddy; 911 __entry->tail = ac->ac_tail; 912 __entry->cr = ac->ac_criteria; 913 __entry->orig_logical = ac->ac_o_ex.fe_logical; 914 __entry->orig_start = ac->ac_o_ex.fe_start; 915 __entry->orig_group = ac->ac_o_ex.fe_group; 916 __entry->orig_len = ac->ac_o_ex.fe_len; 917 __entry->goal_logical = ac->ac_g_ex.fe_logical; 918 __entry->goal_start = ac->ac_g_ex.fe_start; 919 __entry->goal_group = ac->ac_g_ex.fe_group; 920 __entry->goal_len = ac->ac_g_ex.fe_len; 921 __entry->result_logical = ac->ac_f_ex.fe_logical; 922 __entry->result_start = ac->ac_f_ex.fe_start; 923 __entry->result_group = ac->ac_f_ex.fe_group; 924 __entry->result_len = ac->ac_f_ex.fe_len; 925 ), 926 927 TP_printk("dev %d,%d inode %lu orig %u/%d/%u@%u goal %u/%d/%u@%u " 928 "result %u/%d/%u@%u blks %u grps %u cr %u flags 0x%04x " 929 "tail %u broken %u", 930 MAJOR(__entry->dev), MINOR(__entry->dev), 931 (unsigned long) __entry->ino, 932 __entry->orig_group, __entry->orig_start, 933 __entry->orig_len, __entry->orig_logical, 934 __entry->goal_group, __entry->goal_start, 935 __entry->goal_len, __entry->goal_logical, 936 __entry->result_group, __entry->result_start, 937 __entry->result_len, __entry->result_logical, 938 __entry->found, __entry->groups, __entry->cr, 939 __entry->flags, __entry->tail, 940 __entry->buddy ? 1 << __entry->buddy : 0) 941 ); 942 943 TRACE_EVENT(ext4_mballoc_prealloc, 944 TP_PROTO(struct ext4_allocation_context *ac), 945 946 TP_ARGS(ac), 947 948 TP_STRUCT__entry( 949 __field( dev_t, dev ) 950 __field( ino_t, ino ) 951 __field( __u32, orig_logical ) 952 __field( int, orig_start ) 953 __field( __u32, orig_group ) 954 __field( int, orig_len ) 955 __field( __u32, result_logical ) 956 __field( int, result_start ) 957 __field( __u32, result_group ) 958 __field( int, result_len ) 959 ), 960 961 TP_fast_assign( 962 __entry->dev = ac->ac_inode->i_sb->s_dev; 963 __entry->ino = ac->ac_inode->i_ino; 964 __entry->orig_logical = ac->ac_o_ex.fe_logical; 965 __entry->orig_start = ac->ac_o_ex.fe_start; 966 __entry->orig_group = ac->ac_o_ex.fe_group; 967 __entry->orig_len = ac->ac_o_ex.fe_len; 968 __entry->result_logical = ac->ac_b_ex.fe_logical; 969 __entry->result_start = ac->ac_b_ex.fe_start; 970 __entry->result_group = ac->ac_b_ex.fe_group; 971 __entry->result_len = ac->ac_b_ex.fe_len; 972 ), 973 974 TP_printk("dev %d,%d inode %lu orig %u/%d/%u@%u result %u/%d/%u@%u", 975 MAJOR(__entry->dev), MINOR(__entry->dev), 976 (unsigned long) __entry->ino, 977 __entry->orig_group, __entry->orig_start, 978 __entry->orig_len, __entry->orig_logical, 979 __entry->result_group, __entry->result_start, 980 __entry->result_len, __entry->result_logical) 981 ); 982 983 DECLARE_EVENT_CLASS(ext4__mballoc, 984 TP_PROTO(struct super_block *sb, 985 struct inode *inode, 986 ext4_group_t group, 987 ext4_grpblk_t start, 988 ext4_grpblk_t len), 989 990 TP_ARGS(sb, inode, group, start, len), 991 992 TP_STRUCT__entry( 993 __field( dev_t, dev ) 994 __field( ino_t, ino ) 995 __field( int, result_start ) 996 __field( __u32, result_group ) 997 __field( int, result_len ) 998 ), 999 1000 TP_fast_assign( 1001 __entry->dev = sb->s_dev; 1002 __entry->ino = inode ? inode->i_ino : 0; 1003 __entry->result_start = start; 1004 __entry->result_group = group; 1005 __entry->result_len = len; 1006 ), 1007 1008 TP_printk("dev %d,%d inode %lu extent %u/%d/%u ", 1009 MAJOR(__entry->dev), MINOR(__entry->dev), 1010 (unsigned long) __entry->ino, 1011 __entry->result_group, __entry->result_start, 1012 __entry->result_len) 1013 ); 1014 1015 DEFINE_EVENT(ext4__mballoc, ext4_mballoc_discard, 1016 1017 TP_PROTO(struct super_block *sb, 1018 struct inode *inode, 1019 ext4_group_t group, 1020 ext4_grpblk_t start, 1021 ext4_grpblk_t len), 1022 1023 TP_ARGS(sb, inode, group, start, len) 1024 ); 1025 1026 DEFINE_EVENT(ext4__mballoc, ext4_mballoc_free, 1027 1028 TP_PROTO(struct super_block *sb, 1029 struct inode *inode, 1030 ext4_group_t group, 1031 ext4_grpblk_t start, 1032 ext4_grpblk_t len), 1033 1034 TP_ARGS(sb, inode, group, start, len) 1035 ); 1036 1037 TRACE_EVENT(ext4_forget, 1038 TP_PROTO(struct inode *inode, int is_metadata, __u64 block), 1039 1040 TP_ARGS(inode, is_metadata, block), 1041 1042 TP_STRUCT__entry( 1043 __field( dev_t, dev ) 1044 __field( ino_t, ino ) 1045 __field( umode_t, mode ) 1046 __field( int, is_metadata ) 1047 __field( __u64, block ) 1048 ), 1049 1050 TP_fast_assign( 1051 __entry->dev = inode->i_sb->s_dev; 1052 __entry->ino = inode->i_ino; 1053 __entry->mode = inode->i_mode; 1054 __entry->is_metadata = is_metadata; 1055 __entry->block = block; 1056 ), 1057 1058 TP_printk("dev %d,%d ino %lu mode 0%o is_metadata %d block %llu", 1059 MAJOR(__entry->dev), MINOR(__entry->dev), 1060 (unsigned long) __entry->ino, 1061 __entry->mode, __entry->is_metadata, __entry->block) 1062 ); 1063 1064 TRACE_EVENT(ext4_da_update_reserve_space, 1065 TP_PROTO(struct inode *inode, int used_blocks), 1066 1067 TP_ARGS(inode, used_blocks), 1068 1069 TP_STRUCT__entry( 1070 __field( dev_t, dev ) 1071 __field( ino_t, ino ) 1072 __field( umode_t, mode ) 1073 __field( __u64, i_blocks ) 1074 __field( int, used_blocks ) 1075 __field( int, reserved_data_blocks ) 1076 __field( int, reserved_meta_blocks ) 1077 __field( int, allocated_meta_blocks ) 1078 ), 1079 1080 TP_fast_assign( 1081 __entry->dev = inode->i_sb->s_dev; 1082 __entry->ino = inode->i_ino; 1083 __entry->mode = inode->i_mode; 1084 __entry->i_blocks = inode->i_blocks; 1085 __entry->used_blocks = used_blocks; 1086 __entry->reserved_data_blocks = EXT4_I(inode)->i_reserved_data_blocks; 1087 __entry->reserved_meta_blocks = EXT4_I(inode)->i_reserved_meta_blocks; 1088 __entry->allocated_meta_blocks = EXT4_I(inode)->i_allocated_meta_blocks; 1089 ), 1090 1091 TP_printk("dev %d,%d ino %lu mode 0%o i_blocks %llu used_blocks %d " 1092 "reserved_data_blocks %d reserved_meta_blocks %d " 1093 "allocated_meta_blocks %d", 1094 MAJOR(__entry->dev), MINOR(__entry->dev), 1095 (unsigned long) __entry->ino, 1096 __entry->mode, (unsigned long long) __entry->i_blocks, 1097 __entry->used_blocks, __entry->reserved_data_blocks, 1098 __entry->reserved_meta_blocks, __entry->allocated_meta_blocks) 1099 ); 1100 1101 TRACE_EVENT(ext4_da_reserve_space, 1102 TP_PROTO(struct inode *inode, int md_needed), 1103 1104 TP_ARGS(inode, md_needed), 1105 1106 TP_STRUCT__entry( 1107 __field( dev_t, dev ) 1108 __field( ino_t, ino ) 1109 __field( umode_t, mode ) 1110 __field( __u64, i_blocks ) 1111 __field( int, md_needed ) 1112 __field( int, reserved_data_blocks ) 1113 __field( int, reserved_meta_blocks ) 1114 ), 1115 1116 TP_fast_assign( 1117 __entry->dev = inode->i_sb->s_dev; 1118 __entry->ino = inode->i_ino; 1119 __entry->mode = inode->i_mode; 1120 __entry->i_blocks = inode->i_blocks; 1121 __entry->md_needed = md_needed; 1122 __entry->reserved_data_blocks = EXT4_I(inode)->i_reserved_data_blocks; 1123 __entry->reserved_meta_blocks = EXT4_I(inode)->i_reserved_meta_blocks; 1124 ), 1125 1126 TP_printk("dev %d,%d ino %lu mode 0%o i_blocks %llu md_needed %d " 1127 "reserved_data_blocks %d reserved_meta_blocks %d", 1128 MAJOR(__entry->dev), MINOR(__entry->dev), 1129 (unsigned long) __entry->ino, 1130 __entry->mode, (unsigned long long) __entry->i_blocks, 1131 __entry->md_needed, __entry->reserved_data_blocks, 1132 __entry->reserved_meta_blocks) 1133 ); 1134 1135 TRACE_EVENT(ext4_da_release_space, 1136 TP_PROTO(struct inode *inode, int freed_blocks), 1137 1138 TP_ARGS(inode, freed_blocks), 1139 1140 TP_STRUCT__entry( 1141 __field( dev_t, dev ) 1142 __field( ino_t, ino ) 1143 __field( umode_t, mode ) 1144 __field( __u64, i_blocks ) 1145 __field( int, freed_blocks ) 1146 __field( int, reserved_data_blocks ) 1147 __field( int, reserved_meta_blocks ) 1148 __field( int, allocated_meta_blocks ) 1149 ), 1150 1151 TP_fast_assign( 1152 __entry->dev = inode->i_sb->s_dev; 1153 __entry->ino = inode->i_ino; 1154 __entry->mode = inode->i_mode; 1155 __entry->i_blocks = inode->i_blocks; 1156 __entry->freed_blocks = freed_blocks; 1157 __entry->reserved_data_blocks = EXT4_I(inode)->i_reserved_data_blocks; 1158 __entry->reserved_meta_blocks = EXT4_I(inode)->i_reserved_meta_blocks; 1159 __entry->allocated_meta_blocks = EXT4_I(inode)->i_allocated_meta_blocks; 1160 ), 1161 1162 TP_printk("dev %d,%d ino %lu mode 0%o i_blocks %llu freed_blocks %d " 1163 "reserved_data_blocks %d reserved_meta_blocks %d " 1164 "allocated_meta_blocks %d", 1165 MAJOR(__entry->dev), MINOR(__entry->dev), 1166 (unsigned long) __entry->ino, 1167 __entry->mode, (unsigned long long) __entry->i_blocks, 1168 __entry->freed_blocks, __entry->reserved_data_blocks, 1169 __entry->reserved_meta_blocks, __entry->allocated_meta_blocks) 1170 ); 1171 1172 DECLARE_EVENT_CLASS(ext4__bitmap_load, 1173 TP_PROTO(struct super_block *sb, unsigned long group), 1174 1175 TP_ARGS(sb, group), 1176 1177 TP_STRUCT__entry( 1178 __field( dev_t, dev ) 1179 __field( __u32, group ) 1180 1181 ), 1182 1183 TP_fast_assign( 1184 __entry->dev = sb->s_dev; 1185 __entry->group = group; 1186 ), 1187 1188 TP_printk("dev %d,%d group %u", 1189 MAJOR(__entry->dev), MINOR(__entry->dev), 1190 __entry->group) 1191 ); 1192 1193 DEFINE_EVENT(ext4__bitmap_load, ext4_mb_bitmap_load, 1194 1195 TP_PROTO(struct super_block *sb, unsigned long group), 1196 1197 TP_ARGS(sb, group) 1198 ); 1199 1200 DEFINE_EVENT(ext4__bitmap_load, ext4_mb_buddy_bitmap_load, 1201 1202 TP_PROTO(struct super_block *sb, unsigned long group), 1203 1204 TP_ARGS(sb, group) 1205 ); 1206 1207 DEFINE_EVENT(ext4__bitmap_load, ext4_read_block_bitmap_load, 1208 1209 TP_PROTO(struct super_block *sb, unsigned long group), 1210 1211 TP_ARGS(sb, group) 1212 ); 1213 1214 DEFINE_EVENT(ext4__bitmap_load, ext4_load_inode_bitmap, 1215 1216 TP_PROTO(struct super_block *sb, unsigned long group), 1217 1218 TP_ARGS(sb, group) 1219 ); 1220 1221 TRACE_EVENT(ext4_direct_IO_enter, 1222 TP_PROTO(struct inode *inode, loff_t offset, unsigned long len, int rw), 1223 1224 TP_ARGS(inode, offset, len, rw), 1225 1226 TP_STRUCT__entry( 1227 __field( ino_t, ino ) 1228 __field( dev_t, dev ) 1229 __field( loff_t, pos ) 1230 __field( unsigned long, len ) 1231 __field( int, rw ) 1232 ), 1233 1234 TP_fast_assign( 1235 __entry->ino = inode->i_ino; 1236 __entry->dev = inode->i_sb->s_dev; 1237 __entry->pos = offset; 1238 __entry->len = len; 1239 __entry->rw = rw; 1240 ), 1241 1242 TP_printk("dev %d,%d ino %lu pos %llu len %lu rw %d", 1243 MAJOR(__entry->dev), MINOR(__entry->dev), 1244 (unsigned long) __entry->ino, 1245 (unsigned long long) __entry->pos, __entry->len, __entry->rw) 1246 ); 1247 1248 TRACE_EVENT(ext4_direct_IO_exit, 1249 TP_PROTO(struct inode *inode, loff_t offset, unsigned long len, int rw, int ret), 1250 1251 TP_ARGS(inode, offset, len, rw, ret), 1252 1253 TP_STRUCT__entry( 1254 __field( ino_t, ino ) 1255 __field( dev_t, dev ) 1256 __field( loff_t, pos ) 1257 __field( unsigned long, len ) 1258 __field( int, rw ) 1259 __field( int, ret ) 1260 ), 1261 1262 TP_fast_assign( 1263 __entry->ino = inode->i_ino; 1264 __entry->dev = inode->i_sb->s_dev; 1265 __entry->pos = offset; 1266 __entry->len = len; 1267 __entry->rw = rw; 1268 __entry->ret = ret; 1269 ), 1270 1271 TP_printk("dev %d,%d ino %lu pos %llu len %lu rw %d ret %d", 1272 MAJOR(__entry->dev), MINOR(__entry->dev), 1273 (unsigned long) __entry->ino, 1274 (unsigned long long) __entry->pos, __entry->len, 1275 __entry->rw, __entry->ret) 1276 ); 1277 1278 TRACE_EVENT(ext4_fallocate_enter, 1279 TP_PROTO(struct inode *inode, loff_t offset, loff_t len, int mode), 1280 1281 TP_ARGS(inode, offset, len, mode), 1282 1283 TP_STRUCT__entry( 1284 __field( ino_t, ino ) 1285 __field( dev_t, dev ) 1286 __field( loff_t, pos ) 1287 __field( loff_t, len ) 1288 __field( int, mode ) 1289 ), 1290 1291 TP_fast_assign( 1292 __entry->ino = inode->i_ino; 1293 __entry->dev = inode->i_sb->s_dev; 1294 __entry->pos = offset; 1295 __entry->len = len; 1296 __entry->mode = mode; 1297 ), 1298 1299 TP_printk("dev %d,%d ino %ld pos %llu len %llu mode %d", 1300 MAJOR(__entry->dev), MINOR(__entry->dev), 1301 (unsigned long) __entry->ino, 1302 (unsigned long long) __entry->pos, 1303 (unsigned long long) __entry->len, __entry->mode) 1304 ); 1305 1306 TRACE_EVENT(ext4_fallocate_exit, 1307 TP_PROTO(struct inode *inode, loff_t offset, unsigned int max_blocks, int ret), 1308 1309 TP_ARGS(inode, offset, max_blocks, ret), 1310 1311 TP_STRUCT__entry( 1312 __field( ino_t, ino ) 1313 __field( dev_t, dev ) 1314 __field( loff_t, pos ) 1315 __field( unsigned, blocks ) 1316 __field( int, ret ) 1317 ), 1318 1319 TP_fast_assign( 1320 __entry->ino = inode->i_ino; 1321 __entry->dev = inode->i_sb->s_dev; 1322 __entry->pos = offset; 1323 __entry->blocks = max_blocks; 1324 __entry->ret = ret; 1325 ), 1326 1327 TP_printk("dev %d,%d ino %ld pos %llu blocks %d ret %d", 1328 MAJOR(__entry->dev), MINOR(__entry->dev), 1329 (unsigned long) __entry->ino, 1330 (unsigned long long) __entry->pos, __entry->blocks, 1331 __entry->ret) 1332 ); 1333 1334 TRACE_EVENT(ext4_unlink_enter, 1335 TP_PROTO(struct inode *parent, struct dentry *dentry), 1336 1337 TP_ARGS(parent, dentry), 1338 1339 TP_STRUCT__entry( 1340 __field( ino_t, parent ) 1341 __field( ino_t, ino ) 1342 __field( loff_t, size ) 1343 __field( dev_t, dev ) 1344 ), 1345 1346 TP_fast_assign( 1347 __entry->parent = parent->i_ino; 1348 __entry->ino = dentry->d_inode->i_ino; 1349 __entry->size = dentry->d_inode->i_size; 1350 __entry->dev = dentry->d_inode->i_sb->s_dev; 1351 ), 1352 1353 TP_printk("dev %d,%d ino %ld size %lld parent %ld", 1354 MAJOR(__entry->dev), MINOR(__entry->dev), 1355 (unsigned long) __entry->ino, __entry->size, 1356 (unsigned long) __entry->parent) 1357 ); 1358 1359 TRACE_EVENT(ext4_unlink_exit, 1360 TP_PROTO(struct dentry *dentry, int ret), 1361 1362 TP_ARGS(dentry, ret), 1363 1364 TP_STRUCT__entry( 1365 __field( ino_t, ino ) 1366 __field( dev_t, dev ) 1367 __field( int, ret ) 1368 ), 1369 1370 TP_fast_assign( 1371 __entry->ino = dentry->d_inode->i_ino; 1372 __entry->dev = dentry->d_inode->i_sb->s_dev; 1373 __entry->ret = ret; 1374 ), 1375 1376 TP_printk("dev %d,%d ino %ld ret %d", 1377 MAJOR(__entry->dev), MINOR(__entry->dev), 1378 (unsigned long) __entry->ino, 1379 __entry->ret) 1380 ); 1381 1382 DECLARE_EVENT_CLASS(ext4__truncate, 1383 TP_PROTO(struct inode *inode), 1384 1385 TP_ARGS(inode), 1386 1387 TP_STRUCT__entry( 1388 __field( ino_t, ino ) 1389 __field( dev_t, dev ) 1390 __field( blkcnt_t, blocks ) 1391 ), 1392 1393 TP_fast_assign( 1394 __entry->ino = inode->i_ino; 1395 __entry->dev = inode->i_sb->s_dev; 1396 __entry->blocks = inode->i_blocks; 1397 ), 1398 1399 TP_printk("dev %d,%d ino %lu blocks %lu", 1400 MAJOR(__entry->dev), MINOR(__entry->dev), 1401 (unsigned long) __entry->ino, (unsigned long) __entry->blocks) 1402 ); 1403 1404 DEFINE_EVENT(ext4__truncate, ext4_truncate_enter, 1405 1406 TP_PROTO(struct inode *inode), 1407 1408 TP_ARGS(inode) 1409 ); 1410 1411 DEFINE_EVENT(ext4__truncate, ext4_truncate_exit, 1412 1413 TP_PROTO(struct inode *inode), 1414 1415 TP_ARGS(inode) 1416 ); 1417 1418 DECLARE_EVENT_CLASS(ext4__map_blocks_enter, 1419 TP_PROTO(struct inode *inode, ext4_lblk_t lblk, 1420 unsigned len, unsigned flags), 1421 1422 TP_ARGS(inode, lblk, len, flags), 1423 1424 TP_STRUCT__entry( 1425 __field( ino_t, ino ) 1426 __field( dev_t, dev ) 1427 __field( ext4_lblk_t, lblk ) 1428 __field( unsigned, len ) 1429 __field( unsigned, flags ) 1430 ), 1431 1432 TP_fast_assign( 1433 __entry->ino = inode->i_ino; 1434 __entry->dev = inode->i_sb->s_dev; 1435 __entry->lblk = lblk; 1436 __entry->len = len; 1437 __entry->flags = flags; 1438 ), 1439 1440 TP_printk("dev %d,%d ino %lu lblk %u len %u flags %u", 1441 MAJOR(__entry->dev), MINOR(__entry->dev), 1442 (unsigned long) __entry->ino, 1443 (unsigned) __entry->lblk, __entry->len, __entry->flags) 1444 ); 1445 1446 DEFINE_EVENT(ext4__map_blocks_enter, ext4_ext_map_blocks_enter, 1447 TP_PROTO(struct inode *inode, ext4_lblk_t lblk, 1448 unsigned len, unsigned flags), 1449 1450 TP_ARGS(inode, lblk, len, flags) 1451 ); 1452 1453 DEFINE_EVENT(ext4__map_blocks_enter, ext4_ind_map_blocks_enter, 1454 TP_PROTO(struct inode *inode, ext4_lblk_t lblk, 1455 unsigned len, unsigned flags), 1456 1457 TP_ARGS(inode, lblk, len, flags) 1458 ); 1459 1460 DECLARE_EVENT_CLASS(ext4__map_blocks_exit, 1461 TP_PROTO(struct inode *inode, ext4_lblk_t lblk, 1462 ext4_fsblk_t pblk, unsigned len, int ret), 1463 1464 TP_ARGS(inode, lblk, pblk, len, ret), 1465 1466 TP_STRUCT__entry( 1467 __field( ino_t, ino ) 1468 __field( dev_t, dev ) 1469 __field( ext4_lblk_t, lblk ) 1470 __field( ext4_fsblk_t, pblk ) 1471 __field( unsigned, len ) 1472 __field( int, ret ) 1473 ), 1474 1475 TP_fast_assign( 1476 __entry->ino = inode->i_ino; 1477 __entry->dev = inode->i_sb->s_dev; 1478 __entry->lblk = lblk; 1479 __entry->pblk = pblk; 1480 __entry->len = len; 1481 __entry->ret = ret; 1482 ), 1483 1484 TP_printk("dev %d,%d ino %lu lblk %u pblk %llu len %u ret %d", 1485 MAJOR(__entry->dev), MINOR(__entry->dev), 1486 (unsigned long) __entry->ino, 1487 (unsigned) __entry->lblk, (unsigned long long) __entry->pblk, 1488 __entry->len, __entry->ret) 1489 ); 1490 1491 DEFINE_EVENT(ext4__map_blocks_exit, ext4_ext_map_blocks_exit, 1492 TP_PROTO(struct inode *inode, ext4_lblk_t lblk, 1493 ext4_fsblk_t pblk, unsigned len, int ret), 1494 1495 TP_ARGS(inode, lblk, pblk, len, ret) 1496 ); 1497 1498 DEFINE_EVENT(ext4__map_blocks_exit, ext4_ind_map_blocks_exit, 1499 TP_PROTO(struct inode *inode, ext4_lblk_t lblk, 1500 ext4_fsblk_t pblk, unsigned len, int ret), 1501 1502 TP_ARGS(inode, lblk, pblk, len, ret) 1503 ); 1504 1505 TRACE_EVENT(ext4_ext_load_extent, 1506 TP_PROTO(struct inode *inode, ext4_lblk_t lblk, ext4_fsblk_t pblk), 1507 1508 TP_ARGS(inode, lblk, pblk), 1509 1510 TP_STRUCT__entry( 1511 __field( ino_t, ino ) 1512 __field( dev_t, dev ) 1513 __field( ext4_lblk_t, lblk ) 1514 __field( ext4_fsblk_t, pblk ) 1515 ), 1516 1517 TP_fast_assign( 1518 __entry->ino = inode->i_ino; 1519 __entry->dev = inode->i_sb->s_dev; 1520 __entry->lblk = lblk; 1521 __entry->pblk = pblk; 1522 ), 1523 1524 TP_printk("dev %d,%d ino %lu lblk %u pblk %llu", 1525 MAJOR(__entry->dev), MINOR(__entry->dev), 1526 (unsigned long) __entry->ino, 1527 (unsigned) __entry->lblk, (unsigned long long) __entry->pblk) 1528 ); 1529 1530 TRACE_EVENT(ext4_load_inode, 1531 TP_PROTO(struct inode *inode), 1532 1533 TP_ARGS(inode), 1534 1535 TP_STRUCT__entry( 1536 __field( ino_t, ino ) 1537 __field( dev_t, dev ) 1538 ), 1539 1540 TP_fast_assign( 1541 __entry->ino = inode->i_ino; 1542 __entry->dev = inode->i_sb->s_dev; 1543 ), 1544 1545 TP_printk("dev %d,%d ino %ld", 1546 MAJOR(__entry->dev), MINOR(__entry->dev), 1547 (unsigned long) __entry->ino) 1548 ); 1549 1550 #endif /* _TRACE_EXT4_H */ 1551 1552 /* This part must be outside protection */ 1553 #include <trace/define_trace.h> 1554