1 #undef TRACE_SYSTEM 2 #define TRACE_SYSTEM btrfs 3 4 #if !defined(_TRACE_BTRFS_H) || defined(TRACE_HEADER_MULTI_READ) 5 #define _TRACE_BTRFS_H 6 7 #include <linux/writeback.h> 8 #include <linux/tracepoint.h> 9 10 struct btrfs_root; 11 struct btrfs_fs_info; 12 struct btrfs_inode; 13 struct extent_map; 14 struct btrfs_ordered_extent; 15 struct btrfs_delayed_ref_node; 16 struct btrfs_delayed_tree_ref; 17 struct btrfs_delayed_data_ref; 18 struct btrfs_delayed_ref_head; 19 struct map_lookup; 20 struct extent_buffer; 21 22 #define show_ref_type(type) \ 23 __print_symbolic(type, \ 24 { BTRFS_TREE_BLOCK_REF_KEY, "TREE_BLOCK_REF" }, \ 25 { BTRFS_EXTENT_DATA_REF_KEY, "EXTENT_DATA_REF" }, \ 26 { BTRFS_EXTENT_REF_V0_KEY, "EXTENT_REF_V0" }, \ 27 { BTRFS_SHARED_BLOCK_REF_KEY, "SHARED_BLOCK_REF" }, \ 28 { BTRFS_SHARED_DATA_REF_KEY, "SHARED_DATA_REF" }) 29 30 #define __show_root_type(obj) \ 31 __print_symbolic_u64(obj, \ 32 { BTRFS_ROOT_TREE_OBJECTID, "ROOT_TREE" }, \ 33 { BTRFS_EXTENT_TREE_OBJECTID, "EXTENT_TREE" }, \ 34 { BTRFS_CHUNK_TREE_OBJECTID, "CHUNK_TREE" }, \ 35 { BTRFS_DEV_TREE_OBJECTID, "DEV_TREE" }, \ 36 { BTRFS_FS_TREE_OBJECTID, "FS_TREE" }, \ 37 { BTRFS_ROOT_TREE_DIR_OBJECTID, "ROOT_TREE_DIR" }, \ 38 { BTRFS_CSUM_TREE_OBJECTID, "CSUM_TREE" }, \ 39 { BTRFS_TREE_LOG_OBJECTID, "TREE_LOG" }, \ 40 { BTRFS_TREE_RELOC_OBJECTID, "TREE_RELOC" }, \ 41 { BTRFS_DATA_RELOC_TREE_OBJECTID, "DATA_RELOC_TREE" }) 42 43 #define show_root_type(obj) \ 44 obj, ((obj >= BTRFS_DATA_RELOC_TREE_OBJECTID) || \ 45 (obj <= BTRFS_CSUM_TREE_OBJECTID )) ? __show_root_type(obj) : "-" 46 47 TRACE_EVENT(btrfs_transaction_commit, 48 49 TP_PROTO(struct btrfs_root *root), 50 51 TP_ARGS(root), 52 53 TP_STRUCT__entry( 54 __field( u64, generation ) 55 __field( u64, root_objectid ) 56 ), 57 58 TP_fast_assign( 59 __entry->generation = root->fs_info->generation; 60 __entry->root_objectid = root->root_key.objectid; 61 ), 62 63 TP_printk("root = %llu(%s), gen = %llu", 64 show_root_type(__entry->root_objectid), 65 (unsigned long long)__entry->generation) 66 ); 67 68 DECLARE_EVENT_CLASS(btrfs__inode, 69 70 TP_PROTO(struct inode *inode), 71 72 TP_ARGS(inode), 73 74 TP_STRUCT__entry( 75 __field( ino_t, ino ) 76 __field( blkcnt_t, blocks ) 77 __field( u64, disk_i_size ) 78 __field( u64, generation ) 79 __field( u64, last_trans ) 80 __field( u64, logged_trans ) 81 __field( u64, root_objectid ) 82 ), 83 84 TP_fast_assign( 85 __entry->ino = inode->i_ino; 86 __entry->blocks = inode->i_blocks; 87 __entry->disk_i_size = BTRFS_I(inode)->disk_i_size; 88 __entry->generation = BTRFS_I(inode)->generation; 89 __entry->last_trans = BTRFS_I(inode)->last_trans; 90 __entry->logged_trans = BTRFS_I(inode)->logged_trans; 91 __entry->root_objectid = 92 BTRFS_I(inode)->root->root_key.objectid; 93 ), 94 95 TP_printk("root = %llu(%s), gen = %llu, ino = %lu, blocks = %llu, " 96 "disk_i_size = %llu, last_trans = %llu, logged_trans = %llu", 97 show_root_type(__entry->root_objectid), 98 (unsigned long long)__entry->generation, 99 (unsigned long)__entry->ino, 100 (unsigned long long)__entry->blocks, 101 (unsigned long long)__entry->disk_i_size, 102 (unsigned long long)__entry->last_trans, 103 (unsigned long long)__entry->logged_trans) 104 ); 105 106 DEFINE_EVENT(btrfs__inode, btrfs_inode_new, 107 108 TP_PROTO(struct inode *inode), 109 110 TP_ARGS(inode) 111 ); 112 113 DEFINE_EVENT(btrfs__inode, btrfs_inode_request, 114 115 TP_PROTO(struct inode *inode), 116 117 TP_ARGS(inode) 118 ); 119 120 DEFINE_EVENT(btrfs__inode, btrfs_inode_evict, 121 122 TP_PROTO(struct inode *inode), 123 124 TP_ARGS(inode) 125 ); 126 127 #define __show_map_type(type) \ 128 __print_symbolic_u64(type, \ 129 { EXTENT_MAP_LAST_BYTE, "LAST_BYTE" }, \ 130 { EXTENT_MAP_HOLE, "HOLE" }, \ 131 { EXTENT_MAP_INLINE, "INLINE" }, \ 132 { EXTENT_MAP_DELALLOC, "DELALLOC" }) 133 134 #define show_map_type(type) \ 135 type, (type >= EXTENT_MAP_LAST_BYTE) ? "-" : __show_map_type(type) 136 137 #define show_map_flags(flag) \ 138 __print_flags(flag, "|", \ 139 { EXTENT_FLAG_PINNED, "PINNED" }, \ 140 { EXTENT_FLAG_COMPRESSED, "COMPRESSED" }, \ 141 { EXTENT_FLAG_VACANCY, "VACANCY" }, \ 142 { EXTENT_FLAG_PREALLOC, "PREALLOC" }) 143 144 TRACE_EVENT(btrfs_get_extent, 145 146 TP_PROTO(struct btrfs_root *root, struct extent_map *map), 147 148 TP_ARGS(root, map), 149 150 TP_STRUCT__entry( 151 __field( u64, root_objectid ) 152 __field( u64, start ) 153 __field( u64, len ) 154 __field( u64, orig_start ) 155 __field( u64, block_start ) 156 __field( u64, block_len ) 157 __field( unsigned long, flags ) 158 __field( int, refs ) 159 __field( unsigned int, compress_type ) 160 ), 161 162 TP_fast_assign( 163 __entry->root_objectid = root->root_key.objectid; 164 __entry->start = map->start; 165 __entry->len = map->len; 166 __entry->orig_start = map->orig_start; 167 __entry->block_start = map->block_start; 168 __entry->block_len = map->block_len; 169 __entry->flags = map->flags; 170 __entry->refs = atomic_read(&map->refs); 171 __entry->compress_type = map->compress_type; 172 ), 173 174 TP_printk("root = %llu(%s), start = %llu, len = %llu, " 175 "orig_start = %llu, block_start = %llu(%s), " 176 "block_len = %llu, flags = %s, refs = %u, " 177 "compress_type = %u", 178 show_root_type(__entry->root_objectid), 179 (unsigned long long)__entry->start, 180 (unsigned long long)__entry->len, 181 (unsigned long long)__entry->orig_start, 182 show_map_type(__entry->block_start), 183 (unsigned long long)__entry->block_len, 184 show_map_flags(__entry->flags), 185 __entry->refs, __entry->compress_type) 186 ); 187 188 #define show_ordered_flags(flags) \ 189 __print_symbolic(flags, \ 190 { BTRFS_ORDERED_IO_DONE, "IO_DONE" }, \ 191 { BTRFS_ORDERED_COMPLETE, "COMPLETE" }, \ 192 { BTRFS_ORDERED_NOCOW, "NOCOW" }, \ 193 { BTRFS_ORDERED_COMPRESSED, "COMPRESSED" }, \ 194 { BTRFS_ORDERED_PREALLOC, "PREALLOC" }, \ 195 { BTRFS_ORDERED_DIRECT, "DIRECT" }) 196 197 DECLARE_EVENT_CLASS(btrfs__ordered_extent, 198 199 TP_PROTO(struct inode *inode, struct btrfs_ordered_extent *ordered), 200 201 TP_ARGS(inode, ordered), 202 203 TP_STRUCT__entry( 204 __field( ino_t, ino ) 205 __field( u64, file_offset ) 206 __field( u64, start ) 207 __field( u64, len ) 208 __field( u64, disk_len ) 209 __field( u64, bytes_left ) 210 __field( unsigned long, flags ) 211 __field( int, compress_type ) 212 __field( int, refs ) 213 __field( u64, root_objectid ) 214 ), 215 216 TP_fast_assign( 217 __entry->ino = inode->i_ino; 218 __entry->file_offset = ordered->file_offset; 219 __entry->start = ordered->start; 220 __entry->len = ordered->len; 221 __entry->disk_len = ordered->disk_len; 222 __entry->bytes_left = ordered->bytes_left; 223 __entry->flags = ordered->flags; 224 __entry->compress_type = ordered->compress_type; 225 __entry->refs = atomic_read(&ordered->refs); 226 __entry->root_objectid = 227 BTRFS_I(inode)->root->root_key.objectid; 228 ), 229 230 TP_printk("root = %llu(%s), ino = %llu, file_offset = %llu, " 231 "start = %llu, len = %llu, disk_len = %llu, " 232 "bytes_left = %llu, flags = %s, compress_type = %d, " 233 "refs = %d", 234 show_root_type(__entry->root_objectid), 235 (unsigned long long)__entry->ino, 236 (unsigned long long)__entry->file_offset, 237 (unsigned long long)__entry->start, 238 (unsigned long long)__entry->len, 239 (unsigned long long)__entry->disk_len, 240 (unsigned long long)__entry->bytes_left, 241 show_ordered_flags(__entry->flags), 242 __entry->compress_type, __entry->refs) 243 ); 244 245 DEFINE_EVENT(btrfs__ordered_extent, btrfs_ordered_extent_add, 246 247 TP_PROTO(struct inode *inode, struct btrfs_ordered_extent *ordered), 248 249 TP_ARGS(inode, ordered) 250 ); 251 252 DEFINE_EVENT(btrfs__ordered_extent, btrfs_ordered_extent_remove, 253 254 TP_PROTO(struct inode *inode, struct btrfs_ordered_extent *ordered), 255 256 TP_ARGS(inode, ordered) 257 ); 258 259 DEFINE_EVENT(btrfs__ordered_extent, btrfs_ordered_extent_start, 260 261 TP_PROTO(struct inode *inode, struct btrfs_ordered_extent *ordered), 262 263 TP_ARGS(inode, ordered) 264 ); 265 266 DEFINE_EVENT(btrfs__ordered_extent, btrfs_ordered_extent_put, 267 268 TP_PROTO(struct inode *inode, struct btrfs_ordered_extent *ordered), 269 270 TP_ARGS(inode, ordered) 271 ); 272 273 DECLARE_EVENT_CLASS(btrfs__writepage, 274 275 TP_PROTO(struct page *page, struct inode *inode, 276 struct writeback_control *wbc), 277 278 TP_ARGS(page, inode, wbc), 279 280 TP_STRUCT__entry( 281 __field( ino_t, ino ) 282 __field( pgoff_t, index ) 283 __field( long, nr_to_write ) 284 __field( long, pages_skipped ) 285 __field( loff_t, range_start ) 286 __field( loff_t, range_end ) 287 __field( char, nonblocking ) 288 __field( char, for_kupdate ) 289 __field( char, for_reclaim ) 290 __field( char, range_cyclic ) 291 __field( pgoff_t, writeback_index ) 292 __field( u64, root_objectid ) 293 ), 294 295 TP_fast_assign( 296 __entry->ino = inode->i_ino; 297 __entry->index = page->index; 298 __entry->nr_to_write = wbc->nr_to_write; 299 __entry->pages_skipped = wbc->pages_skipped; 300 __entry->range_start = wbc->range_start; 301 __entry->range_end = wbc->range_end; 302 __entry->nonblocking = wbc->nonblocking; 303 __entry->for_kupdate = wbc->for_kupdate; 304 __entry->for_reclaim = wbc->for_reclaim; 305 __entry->range_cyclic = wbc->range_cyclic; 306 __entry->writeback_index = inode->i_mapping->writeback_index; 307 __entry->root_objectid = 308 BTRFS_I(inode)->root->root_key.objectid; 309 ), 310 311 TP_printk("root = %llu(%s), ino = %lu, page_index = %lu, " 312 "nr_to_write = %ld, pages_skipped = %ld, range_start = %llu, " 313 "range_end = %llu, nonblocking = %d, for_kupdate = %d, " 314 "for_reclaim = %d, range_cyclic = %d, writeback_index = %lu", 315 show_root_type(__entry->root_objectid), 316 (unsigned long)__entry->ino, __entry->index, 317 __entry->nr_to_write, __entry->pages_skipped, 318 __entry->range_start, __entry->range_end, 319 __entry->nonblocking, __entry->for_kupdate, 320 __entry->for_reclaim, __entry->range_cyclic, 321 (unsigned long)__entry->writeback_index) 322 ); 323 324 DEFINE_EVENT(btrfs__writepage, __extent_writepage, 325 326 TP_PROTO(struct page *page, struct inode *inode, 327 struct writeback_control *wbc), 328 329 TP_ARGS(page, inode, wbc) 330 ); 331 332 TRACE_EVENT(btrfs_writepage_end_io_hook, 333 334 TP_PROTO(struct page *page, u64 start, u64 end, int uptodate), 335 336 TP_ARGS(page, start, end, uptodate), 337 338 TP_STRUCT__entry( 339 __field( ino_t, ino ) 340 __field( pgoff_t, index ) 341 __field( u64, start ) 342 __field( u64, end ) 343 __field( int, uptodate ) 344 __field( u64, root_objectid ) 345 ), 346 347 TP_fast_assign( 348 __entry->ino = page->mapping->host->i_ino; 349 __entry->index = page->index; 350 __entry->start = start; 351 __entry->end = end; 352 __entry->uptodate = uptodate; 353 __entry->root_objectid = 354 BTRFS_I(page->mapping->host)->root->root_key.objectid; 355 ), 356 357 TP_printk("root = %llu(%s), ino = %lu, page_index = %lu, start = %llu, " 358 "end = %llu, uptodate = %d", 359 show_root_type(__entry->root_objectid), 360 (unsigned long)__entry->ino, (unsigned long)__entry->index, 361 (unsigned long long)__entry->start, 362 (unsigned long long)__entry->end, __entry->uptodate) 363 ); 364 365 TRACE_EVENT(btrfs_sync_file, 366 367 TP_PROTO(struct file *file, int datasync), 368 369 TP_ARGS(file, datasync), 370 371 TP_STRUCT__entry( 372 __field( ino_t, ino ) 373 __field( ino_t, parent ) 374 __field( int, datasync ) 375 __field( u64, root_objectid ) 376 ), 377 378 TP_fast_assign( 379 struct dentry *dentry = file->f_path.dentry; 380 struct inode *inode = dentry->d_inode; 381 382 __entry->ino = inode->i_ino; 383 __entry->parent = dentry->d_parent->d_inode->i_ino; 384 __entry->datasync = datasync; 385 __entry->root_objectid = 386 BTRFS_I(inode)->root->root_key.objectid; 387 ), 388 389 TP_printk("root = %llu(%s), ino = %ld, parent = %ld, datasync = %d", 390 show_root_type(__entry->root_objectid), 391 (unsigned long)__entry->ino, (unsigned long)__entry->parent, 392 __entry->datasync) 393 ); 394 395 TRACE_EVENT(btrfs_sync_fs, 396 397 TP_PROTO(int wait), 398 399 TP_ARGS(wait), 400 401 TP_STRUCT__entry( 402 __field( int, wait ) 403 ), 404 405 TP_fast_assign( 406 __entry->wait = wait; 407 ), 408 409 TP_printk("wait = %d", __entry->wait) 410 ); 411 412 #define show_ref_action(action) \ 413 __print_symbolic(action, \ 414 { BTRFS_ADD_DELAYED_REF, "ADD_DELAYED_REF" }, \ 415 { BTRFS_DROP_DELAYED_REF, "DROP_DELAYED_REF" }, \ 416 { BTRFS_ADD_DELAYED_EXTENT, "ADD_DELAYED_EXTENT" }, \ 417 { BTRFS_UPDATE_DELAYED_HEAD, "UPDATE_DELAYED_HEAD" }) 418 419 420 TRACE_EVENT(btrfs_delayed_tree_ref, 421 422 TP_PROTO(struct btrfs_delayed_ref_node *ref, 423 struct btrfs_delayed_tree_ref *full_ref, 424 int action), 425 426 TP_ARGS(ref, full_ref, action), 427 428 TP_STRUCT__entry( 429 __field( u64, bytenr ) 430 __field( u64, num_bytes ) 431 __field( int, action ) 432 __field( u64, parent ) 433 __field( u64, ref_root ) 434 __field( int, level ) 435 __field( int, type ) 436 ), 437 438 TP_fast_assign( 439 __entry->bytenr = ref->bytenr; 440 __entry->num_bytes = ref->num_bytes; 441 __entry->action = action; 442 __entry->parent = full_ref->parent; 443 __entry->ref_root = full_ref->root; 444 __entry->level = full_ref->level; 445 __entry->type = ref->type; 446 ), 447 448 TP_printk("bytenr = %llu, num_bytes = %llu, action = %s, " 449 "parent = %llu(%s), ref_root = %llu(%s), level = %d, " 450 "type = %s", 451 (unsigned long long)__entry->bytenr, 452 (unsigned long long)__entry->num_bytes, 453 show_ref_action(__entry->action), 454 show_root_type(__entry->parent), 455 show_root_type(__entry->ref_root), 456 __entry->level, show_ref_type(__entry->type)) 457 ); 458 459 TRACE_EVENT(btrfs_delayed_data_ref, 460 461 TP_PROTO(struct btrfs_delayed_ref_node *ref, 462 struct btrfs_delayed_data_ref *full_ref, 463 int action), 464 465 TP_ARGS(ref, full_ref, action), 466 467 TP_STRUCT__entry( 468 __field( u64, bytenr ) 469 __field( u64, num_bytes ) 470 __field( int, action ) 471 __field( u64, parent ) 472 __field( u64, ref_root ) 473 __field( u64, owner ) 474 __field( u64, offset ) 475 __field( int, type ) 476 ), 477 478 TP_fast_assign( 479 __entry->bytenr = ref->bytenr; 480 __entry->num_bytes = ref->num_bytes; 481 __entry->action = action; 482 __entry->parent = full_ref->parent; 483 __entry->ref_root = full_ref->root; 484 __entry->owner = full_ref->objectid; 485 __entry->offset = full_ref->offset; 486 __entry->type = ref->type; 487 ), 488 489 TP_printk("bytenr = %llu, num_bytes = %llu, action = %s, " 490 "parent = %llu(%s), ref_root = %llu(%s), owner = %llu, " 491 "offset = %llu, type = %s", 492 (unsigned long long)__entry->bytenr, 493 (unsigned long long)__entry->num_bytes, 494 show_ref_action(__entry->action), 495 show_root_type(__entry->parent), 496 show_root_type(__entry->ref_root), 497 (unsigned long long)__entry->owner, 498 (unsigned long long)__entry->offset, 499 show_ref_type(__entry->type)) 500 ); 501 502 TRACE_EVENT(btrfs_delayed_ref_head, 503 504 TP_PROTO(struct btrfs_delayed_ref_node *ref, 505 struct btrfs_delayed_ref_head *head_ref, 506 int action), 507 508 TP_ARGS(ref, head_ref, action), 509 510 TP_STRUCT__entry( 511 __field( u64, bytenr ) 512 __field( u64, num_bytes ) 513 __field( int, action ) 514 __field( int, is_data ) 515 ), 516 517 TP_fast_assign( 518 __entry->bytenr = ref->bytenr; 519 __entry->num_bytes = ref->num_bytes; 520 __entry->action = action; 521 __entry->is_data = head_ref->is_data; 522 ), 523 524 TP_printk("bytenr = %llu, num_bytes = %llu, action = %s, is_data = %d", 525 (unsigned long long)__entry->bytenr, 526 (unsigned long long)__entry->num_bytes, 527 show_ref_action(__entry->action), 528 __entry->is_data) 529 ); 530 531 #define show_chunk_type(type) \ 532 __print_flags(type, "|", \ 533 { BTRFS_BLOCK_GROUP_DATA, "DATA" }, \ 534 { BTRFS_BLOCK_GROUP_SYSTEM, "SYSTEM"}, \ 535 { BTRFS_BLOCK_GROUP_METADATA, "METADATA"}, \ 536 { BTRFS_BLOCK_GROUP_RAID0, "RAID0" }, \ 537 { BTRFS_BLOCK_GROUP_RAID1, "RAID1" }, \ 538 { BTRFS_BLOCK_GROUP_DUP, "DUP" }, \ 539 { BTRFS_BLOCK_GROUP_RAID10, "RAID10"}) 540 541 DECLARE_EVENT_CLASS(btrfs__chunk, 542 543 TP_PROTO(struct btrfs_root *root, struct map_lookup *map, 544 u64 offset, u64 size), 545 546 TP_ARGS(root, map, offset, size), 547 548 TP_STRUCT__entry( 549 __field( int, num_stripes ) 550 __field( u64, type ) 551 __field( int, sub_stripes ) 552 __field( u64, offset ) 553 __field( u64, size ) 554 __field( u64, root_objectid ) 555 ), 556 557 TP_fast_assign( 558 __entry->num_stripes = map->num_stripes; 559 __entry->type = map->type; 560 __entry->sub_stripes = map->sub_stripes; 561 __entry->offset = offset; 562 __entry->size = size; 563 __entry->root_objectid = root->root_key.objectid; 564 ), 565 566 TP_printk("root = %llu(%s), offset = %llu, size = %llu, " 567 "num_stripes = %d, sub_stripes = %d, type = %s", 568 show_root_type(__entry->root_objectid), 569 (unsigned long long)__entry->offset, 570 (unsigned long long)__entry->size, 571 __entry->num_stripes, __entry->sub_stripes, 572 show_chunk_type(__entry->type)) 573 ); 574 575 DEFINE_EVENT(btrfs__chunk, btrfs_chunk_alloc, 576 577 TP_PROTO(struct btrfs_root *root, struct map_lookup *map, 578 u64 offset, u64 size), 579 580 TP_ARGS(root, map, offset, size) 581 ); 582 583 DEFINE_EVENT(btrfs__chunk, btrfs_chunk_free, 584 585 TP_PROTO(struct btrfs_root *root, struct map_lookup *map, 586 u64 offset, u64 size), 587 588 TP_ARGS(root, map, offset, size) 589 ); 590 591 TRACE_EVENT(btrfs_cow_block, 592 593 TP_PROTO(struct btrfs_root *root, struct extent_buffer *buf, 594 struct extent_buffer *cow), 595 596 TP_ARGS(root, buf, cow), 597 598 TP_STRUCT__entry( 599 __field( u64, root_objectid ) 600 __field( u64, buf_start ) 601 __field( int, refs ) 602 __field( u64, cow_start ) 603 __field( int, buf_level ) 604 __field( int, cow_level ) 605 ), 606 607 TP_fast_assign( 608 __entry->root_objectid = root->root_key.objectid; 609 __entry->buf_start = buf->start; 610 __entry->refs = atomic_read(&buf->refs); 611 __entry->cow_start = cow->start; 612 __entry->buf_level = btrfs_header_level(buf); 613 __entry->cow_level = btrfs_header_level(cow); 614 ), 615 616 TP_printk("root = %llu(%s), refs = %d, orig_buf = %llu " 617 "(orig_level = %d), cow_buf = %llu (cow_level = %d)", 618 show_root_type(__entry->root_objectid), 619 __entry->refs, 620 (unsigned long long)__entry->buf_start, 621 __entry->buf_level, 622 (unsigned long long)__entry->cow_start, 623 __entry->cow_level) 624 ); 625 626 DECLARE_EVENT_CLASS(btrfs__reserved_extent, 627 628 TP_PROTO(struct btrfs_root *root, u64 start, u64 len), 629 630 TP_ARGS(root, start, len), 631 632 TP_STRUCT__entry( 633 __field( u64, root_objectid ) 634 __field( u64, start ) 635 __field( u64, len ) 636 ), 637 638 TP_fast_assign( 639 __entry->root_objectid = root->root_key.objectid; 640 __entry->start = start; 641 __entry->len = len; 642 ), 643 644 TP_printk("root = %llu(%s), start = %llu, len = %llu", 645 show_root_type(__entry->root_objectid), 646 (unsigned long long)__entry->start, 647 (unsigned long long)__entry->len) 648 ); 649 650 DEFINE_EVENT(btrfs__reserved_extent, btrfs_reserved_extent_alloc, 651 652 TP_PROTO(struct btrfs_root *root, u64 start, u64 len), 653 654 TP_ARGS(root, start, len) 655 ); 656 657 DEFINE_EVENT(btrfs__reserved_extent, btrfs_reserved_extent_free, 658 659 TP_PROTO(struct btrfs_root *root, u64 start, u64 len), 660 661 TP_ARGS(root, start, len) 662 ); 663 664 #endif /* _TRACE_BTRFS_H */ 665 666 /* This part must be outside protection */ 667 #include <trace/define_trace.h> 668