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