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