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