11abe9b8aSliubo #undef TRACE_SYSTEM 21abe9b8aSliubo #define TRACE_SYSTEM btrfs 31abe9b8aSliubo 41abe9b8aSliubo #if !defined(_TRACE_BTRFS_H) || defined(TRACE_HEADER_MULTI_READ) 51abe9b8aSliubo #define _TRACE_BTRFS_H 61abe9b8aSliubo 71abe9b8aSliubo #include <linux/writeback.h> 81abe9b8aSliubo #include <linux/tracepoint.h> 9420adbe9SVlastimil Babka #include <trace/events/mmflags.h> 101abe9b8aSliubo 111abe9b8aSliubo struct btrfs_root; 121abe9b8aSliubo struct btrfs_fs_info; 131abe9b8aSliubo struct btrfs_inode; 141abe9b8aSliubo struct extent_map; 151abe9b8aSliubo struct btrfs_ordered_extent; 161abe9b8aSliubo struct btrfs_delayed_ref_node; 171abe9b8aSliubo struct btrfs_delayed_tree_ref; 181abe9b8aSliubo struct btrfs_delayed_data_ref; 191abe9b8aSliubo struct btrfs_delayed_ref_head; 203f7de037SJosef Bacik struct btrfs_block_group_cache; 213f7de037SJosef Bacik struct btrfs_free_cluster; 221abe9b8aSliubo struct map_lookup; 231abe9b8aSliubo struct extent_buffer; 2452483bc2SQu Wenruo struct btrfs_work; 25c3a46891SQu Wenruo struct __btrfs_workqueue; 260f5dcf8dSMark Fasheh struct btrfs_qgroup_extent_record; 271abe9b8aSliubo 281abe9b8aSliubo #define show_ref_type(type) \ 291abe9b8aSliubo __print_symbolic(type, \ 301abe9b8aSliubo { BTRFS_TREE_BLOCK_REF_KEY, "TREE_BLOCK_REF" }, \ 311abe9b8aSliubo { BTRFS_EXTENT_DATA_REF_KEY, "EXTENT_DATA_REF" }, \ 321abe9b8aSliubo { BTRFS_EXTENT_REF_V0_KEY, "EXTENT_REF_V0" }, \ 331abe9b8aSliubo { BTRFS_SHARED_BLOCK_REF_KEY, "SHARED_BLOCK_REF" }, \ 341abe9b8aSliubo { BTRFS_SHARED_DATA_REF_KEY, "SHARED_DATA_REF" }) 351abe9b8aSliubo 361abe9b8aSliubo #define __show_root_type(obj) \ 377f34b746Sliubo __print_symbolic_u64(obj, \ 381abe9b8aSliubo { BTRFS_ROOT_TREE_OBJECTID, "ROOT_TREE" }, \ 391abe9b8aSliubo { BTRFS_EXTENT_TREE_OBJECTID, "EXTENT_TREE" }, \ 401abe9b8aSliubo { BTRFS_CHUNK_TREE_OBJECTID, "CHUNK_TREE" }, \ 411abe9b8aSliubo { BTRFS_DEV_TREE_OBJECTID, "DEV_TREE" }, \ 421abe9b8aSliubo { BTRFS_FS_TREE_OBJECTID, "FS_TREE" }, \ 431abe9b8aSliubo { BTRFS_ROOT_TREE_DIR_OBJECTID, "ROOT_TREE_DIR" }, \ 441abe9b8aSliubo { BTRFS_CSUM_TREE_OBJECTID, "CSUM_TREE" }, \ 451abe9b8aSliubo { BTRFS_TREE_LOG_OBJECTID, "TREE_LOG" }, \ 46e112e2b4SLiu Bo { BTRFS_QUOTA_TREE_OBJECTID, "QUOTA_TREE" }, \ 471abe9b8aSliubo { BTRFS_TREE_RELOC_OBJECTID, "TREE_RELOC" }, \ 48208acb8cSOmar Sandoval { BTRFS_UUID_TREE_OBJECTID, "UUID_TREE" }, \ 49208acb8cSOmar Sandoval { BTRFS_FREE_SPACE_TREE_OBJECTID, "FREE_SPACE_TREE" }, \ 501abe9b8aSliubo { BTRFS_DATA_RELOC_TREE_OBJECTID, "DATA_RELOC_TREE" }) 511abe9b8aSliubo 521abe9b8aSliubo #define show_root_type(obj) \ 531abe9b8aSliubo obj, ((obj >= BTRFS_DATA_RELOC_TREE_OBJECTID) || \ 54fb57dc81SLiu Bo (obj >= BTRFS_ROOT_TREE_OBJECTID && \ 55e112e2b4SLiu Bo obj <= BTRFS_QUOTA_TREE_OBJECTID)) ? __show_root_type(obj) : "-" 561abe9b8aSliubo 573f7de037SJosef Bacik #define BTRFS_GROUP_FLAGS \ 583f7de037SJosef Bacik { BTRFS_BLOCK_GROUP_DATA, "DATA"}, \ 593f7de037SJosef Bacik { BTRFS_BLOCK_GROUP_SYSTEM, "SYSTEM"}, \ 603f7de037SJosef Bacik { BTRFS_BLOCK_GROUP_METADATA, "METADATA"}, \ 613f7de037SJosef Bacik { BTRFS_BLOCK_GROUP_RAID0, "RAID0"}, \ 623f7de037SJosef Bacik { BTRFS_BLOCK_GROUP_RAID1, "RAID1"}, \ 633f7de037SJosef Bacik { BTRFS_BLOCK_GROUP_DUP, "DUP"}, \ 64e112e2b4SLiu Bo { BTRFS_BLOCK_GROUP_RAID10, "RAID10"}, \ 65e112e2b4SLiu Bo { BTRFS_BLOCK_GROUP_RAID5, "RAID5"}, \ 66e112e2b4SLiu Bo { BTRFS_BLOCK_GROUP_RAID6, "RAID6"} 673f7de037SJosef Bacik 688c2a3ca2SJosef Bacik #define BTRFS_UUID_SIZE 16 69*bc074524SJeff Mahoney #define TP_STRUCT__entry_fsid __array(u8, fsid, BTRFS_UUID_SIZE) 70*bc074524SJeff Mahoney 71*bc074524SJeff Mahoney #define TP_fast_assign_fsid(fs_info) \ 72*bc074524SJeff Mahoney memcpy(__entry->fsid, fs_info->fsid, BTRFS_UUID_SIZE) 73*bc074524SJeff Mahoney 74*bc074524SJeff Mahoney #define TP_STRUCT__entry_btrfs(args...) \ 75*bc074524SJeff Mahoney TP_STRUCT__entry( \ 76*bc074524SJeff Mahoney TP_STRUCT__entry_fsid \ 77*bc074524SJeff Mahoney args) 78*bc074524SJeff Mahoney #define TP_fast_assign_btrfs(fs_info, args...) \ 79*bc074524SJeff Mahoney TP_fast_assign( \ 80*bc074524SJeff Mahoney TP_fast_assign_fsid(fs_info); \ 81*bc074524SJeff Mahoney args) 82*bc074524SJeff Mahoney #define TP_printk_btrfs(fmt, args...) \ 83*bc074524SJeff Mahoney TP_printk("%pU: " fmt, __entry->fsid, args) 848c2a3ca2SJosef Bacik 851abe9b8aSliubo TRACE_EVENT(btrfs_transaction_commit, 861abe9b8aSliubo 871abe9b8aSliubo TP_PROTO(struct btrfs_root *root), 881abe9b8aSliubo 891abe9b8aSliubo TP_ARGS(root), 901abe9b8aSliubo 91*bc074524SJeff Mahoney TP_STRUCT__entry_btrfs( 921abe9b8aSliubo __field( u64, generation ) 931abe9b8aSliubo __field( u64, root_objectid ) 941abe9b8aSliubo ), 951abe9b8aSliubo 96*bc074524SJeff Mahoney TP_fast_assign_btrfs(root->fs_info, 971abe9b8aSliubo __entry->generation = root->fs_info->generation; 981abe9b8aSliubo __entry->root_objectid = root->root_key.objectid; 991abe9b8aSliubo ), 1001abe9b8aSliubo 101*bc074524SJeff Mahoney TP_printk_btrfs("root = %llu(%s), gen = %llu", 1021abe9b8aSliubo show_root_type(__entry->root_objectid), 1031abe9b8aSliubo (unsigned long long)__entry->generation) 1041abe9b8aSliubo ); 1051abe9b8aSliubo 1061abe9b8aSliubo DECLARE_EVENT_CLASS(btrfs__inode, 1071abe9b8aSliubo 1081abe9b8aSliubo TP_PROTO(struct inode *inode), 1091abe9b8aSliubo 1101abe9b8aSliubo TP_ARGS(inode), 1111abe9b8aSliubo 112*bc074524SJeff Mahoney TP_STRUCT__entry_btrfs( 1131abe9b8aSliubo __field( ino_t, ino ) 1141abe9b8aSliubo __field( blkcnt_t, blocks ) 1151abe9b8aSliubo __field( u64, disk_i_size ) 1161abe9b8aSliubo __field( u64, generation ) 1171abe9b8aSliubo __field( u64, last_trans ) 1181abe9b8aSliubo __field( u64, logged_trans ) 1191abe9b8aSliubo __field( u64, root_objectid ) 1201abe9b8aSliubo ), 1211abe9b8aSliubo 122*bc074524SJeff Mahoney TP_fast_assign_btrfs(btrfs_sb(inode->i_sb), 1231abe9b8aSliubo __entry->ino = inode->i_ino; 1241abe9b8aSliubo __entry->blocks = inode->i_blocks; 1251abe9b8aSliubo __entry->disk_i_size = BTRFS_I(inode)->disk_i_size; 1261abe9b8aSliubo __entry->generation = BTRFS_I(inode)->generation; 1271abe9b8aSliubo __entry->last_trans = BTRFS_I(inode)->last_trans; 1281abe9b8aSliubo __entry->logged_trans = BTRFS_I(inode)->logged_trans; 1291abe9b8aSliubo __entry->root_objectid = 1301abe9b8aSliubo BTRFS_I(inode)->root->root_key.objectid; 1311abe9b8aSliubo ), 1321abe9b8aSliubo 133*bc074524SJeff Mahoney TP_printk_btrfs("root = %llu(%s), gen = %llu, ino = %lu, blocks = %llu, " 1341abe9b8aSliubo "disk_i_size = %llu, last_trans = %llu, logged_trans = %llu", 1351abe9b8aSliubo show_root_type(__entry->root_objectid), 1361abe9b8aSliubo (unsigned long long)__entry->generation, 1371abe9b8aSliubo (unsigned long)__entry->ino, 1381abe9b8aSliubo (unsigned long long)__entry->blocks, 1391abe9b8aSliubo (unsigned long long)__entry->disk_i_size, 1401abe9b8aSliubo (unsigned long long)__entry->last_trans, 1411abe9b8aSliubo (unsigned long long)__entry->logged_trans) 1421abe9b8aSliubo ); 1431abe9b8aSliubo 1441abe9b8aSliubo DEFINE_EVENT(btrfs__inode, btrfs_inode_new, 1451abe9b8aSliubo 1461abe9b8aSliubo TP_PROTO(struct inode *inode), 1471abe9b8aSliubo 1481abe9b8aSliubo TP_ARGS(inode) 1491abe9b8aSliubo ); 1501abe9b8aSliubo 1511abe9b8aSliubo DEFINE_EVENT(btrfs__inode, btrfs_inode_request, 1521abe9b8aSliubo 1531abe9b8aSliubo TP_PROTO(struct inode *inode), 1541abe9b8aSliubo 1551abe9b8aSliubo TP_ARGS(inode) 1561abe9b8aSliubo ); 1571abe9b8aSliubo 1581abe9b8aSliubo DEFINE_EVENT(btrfs__inode, btrfs_inode_evict, 1591abe9b8aSliubo 1601abe9b8aSliubo TP_PROTO(struct inode *inode), 1611abe9b8aSliubo 1621abe9b8aSliubo TP_ARGS(inode) 1631abe9b8aSliubo ); 1641abe9b8aSliubo 1651abe9b8aSliubo #define __show_map_type(type) \ 1667f34b746Sliubo __print_symbolic_u64(type, \ 1671abe9b8aSliubo { EXTENT_MAP_LAST_BYTE, "LAST_BYTE" }, \ 1681abe9b8aSliubo { EXTENT_MAP_HOLE, "HOLE" }, \ 1691abe9b8aSliubo { EXTENT_MAP_INLINE, "INLINE" }, \ 1701abe9b8aSliubo { EXTENT_MAP_DELALLOC, "DELALLOC" }) 1711abe9b8aSliubo 1721abe9b8aSliubo #define show_map_type(type) \ 1731abe9b8aSliubo type, (type >= EXTENT_MAP_LAST_BYTE) ? "-" : __show_map_type(type) 1741abe9b8aSliubo 1751abe9b8aSliubo #define show_map_flags(flag) \ 1761abe9b8aSliubo __print_flags(flag, "|", \ 177254a2d14SLiu Bo { (1 << EXTENT_FLAG_PINNED), "PINNED" },\ 178254a2d14SLiu Bo { (1 << EXTENT_FLAG_COMPRESSED), "COMPRESSED" },\ 179254a2d14SLiu Bo { (1 << EXTENT_FLAG_VACANCY), "VACANCY" },\ 180254a2d14SLiu Bo { (1 << EXTENT_FLAG_PREALLOC), "PREALLOC" },\ 181254a2d14SLiu Bo { (1 << EXTENT_FLAG_LOGGING), "LOGGING" },\ 182254a2d14SLiu Bo { (1 << EXTENT_FLAG_FILLING), "FILLING" },\ 183254a2d14SLiu Bo { (1 << EXTENT_FLAG_FS_MAPPING), "FS_MAPPING" }) 1841abe9b8aSliubo 1854cd8587cSSteven Rostedt TRACE_EVENT_CONDITION(btrfs_get_extent, 1861abe9b8aSliubo 1871abe9b8aSliubo TP_PROTO(struct btrfs_root *root, struct extent_map *map), 1881abe9b8aSliubo 1891abe9b8aSliubo TP_ARGS(root, map), 1901abe9b8aSliubo 1914cd8587cSSteven Rostedt TP_CONDITION(map), 1924cd8587cSSteven Rostedt 193*bc074524SJeff Mahoney TP_STRUCT__entry_btrfs( 1941abe9b8aSliubo __field( u64, root_objectid ) 1951abe9b8aSliubo __field( u64, start ) 1961abe9b8aSliubo __field( u64, len ) 1971abe9b8aSliubo __field( u64, orig_start ) 1981abe9b8aSliubo __field( u64, block_start ) 1991abe9b8aSliubo __field( u64, block_len ) 2001abe9b8aSliubo __field( unsigned long, flags ) 2011abe9b8aSliubo __field( int, refs ) 2021abe9b8aSliubo __field( unsigned int, compress_type ) 2031abe9b8aSliubo ), 2041abe9b8aSliubo 205*bc074524SJeff Mahoney TP_fast_assign_btrfs(root->fs_info, 2061abe9b8aSliubo __entry->root_objectid = root->root_key.objectid; 2071abe9b8aSliubo __entry->start = map->start; 2081abe9b8aSliubo __entry->len = map->len; 2091abe9b8aSliubo __entry->orig_start = map->orig_start; 2101abe9b8aSliubo __entry->block_start = map->block_start; 2111abe9b8aSliubo __entry->block_len = map->block_len; 2121abe9b8aSliubo __entry->flags = map->flags; 2131abe9b8aSliubo __entry->refs = atomic_read(&map->refs); 2141abe9b8aSliubo __entry->compress_type = map->compress_type; 2151abe9b8aSliubo ), 2161abe9b8aSliubo 217*bc074524SJeff Mahoney TP_printk_btrfs("root = %llu(%s), start = %llu, len = %llu, " 2181abe9b8aSliubo "orig_start = %llu, block_start = %llu(%s), " 2191abe9b8aSliubo "block_len = %llu, flags = %s, refs = %u, " 2201abe9b8aSliubo "compress_type = %u", 2211abe9b8aSliubo show_root_type(__entry->root_objectid), 2221abe9b8aSliubo (unsigned long long)__entry->start, 2231abe9b8aSliubo (unsigned long long)__entry->len, 2241abe9b8aSliubo (unsigned long long)__entry->orig_start, 2251abe9b8aSliubo show_map_type(__entry->block_start), 2261abe9b8aSliubo (unsigned long long)__entry->block_len, 2271abe9b8aSliubo show_map_flags(__entry->flags), 2281abe9b8aSliubo __entry->refs, __entry->compress_type) 2291abe9b8aSliubo ); 2301abe9b8aSliubo 2311abe9b8aSliubo #define show_ordered_flags(flags) \ 2329d04a8ceSLiu Bo __print_flags(flags, "|", \ 2339d04a8ceSLiu Bo { (1 << BTRFS_ORDERED_IO_DONE), "IO_DONE" }, \ 2349d04a8ceSLiu Bo { (1 << BTRFS_ORDERED_COMPLETE), "COMPLETE" }, \ 2359d04a8ceSLiu Bo { (1 << BTRFS_ORDERED_NOCOW), "NOCOW" }, \ 2369d04a8ceSLiu Bo { (1 << BTRFS_ORDERED_COMPRESSED), "COMPRESSED" }, \ 2379d04a8ceSLiu Bo { (1 << BTRFS_ORDERED_PREALLOC), "PREALLOC" }, \ 2389d04a8ceSLiu Bo { (1 << BTRFS_ORDERED_DIRECT), "DIRECT" }, \ 2399d04a8ceSLiu Bo { (1 << BTRFS_ORDERED_IOERR), "IOERR" }, \ 2409d04a8ceSLiu Bo { (1 << BTRFS_ORDERED_UPDATED_ISIZE), "UPDATED_ISIZE" }, \ 241792ddef0SLiu Bo { (1 << BTRFS_ORDERED_LOGGED_CSUM), "LOGGED_CSUM" }, \ 242792ddef0SLiu Bo { (1 << BTRFS_ORDERED_TRUNCATED), "TRUNCATED" }) 243e112e2b4SLiu Bo 2441abe9b8aSliubo 2451abe9b8aSliubo DECLARE_EVENT_CLASS(btrfs__ordered_extent, 2461abe9b8aSliubo 2471abe9b8aSliubo TP_PROTO(struct inode *inode, struct btrfs_ordered_extent *ordered), 2481abe9b8aSliubo 2491abe9b8aSliubo TP_ARGS(inode, ordered), 2501abe9b8aSliubo 251*bc074524SJeff Mahoney TP_STRUCT__entry_btrfs( 2521abe9b8aSliubo __field( ino_t, ino ) 2531abe9b8aSliubo __field( u64, file_offset ) 2541abe9b8aSliubo __field( u64, start ) 2551abe9b8aSliubo __field( u64, len ) 2561abe9b8aSliubo __field( u64, disk_len ) 2571abe9b8aSliubo __field( u64, bytes_left ) 2581abe9b8aSliubo __field( unsigned long, flags ) 2591abe9b8aSliubo __field( int, compress_type ) 2601abe9b8aSliubo __field( int, refs ) 2611abe9b8aSliubo __field( u64, root_objectid ) 2621abe9b8aSliubo ), 2631abe9b8aSliubo 264*bc074524SJeff Mahoney TP_fast_assign_btrfs(btrfs_sb(inode->i_sb), 2651abe9b8aSliubo __entry->ino = inode->i_ino; 2661abe9b8aSliubo __entry->file_offset = ordered->file_offset; 2671abe9b8aSliubo __entry->start = ordered->start; 2681abe9b8aSliubo __entry->len = ordered->len; 2691abe9b8aSliubo __entry->disk_len = ordered->disk_len; 2701abe9b8aSliubo __entry->bytes_left = ordered->bytes_left; 2711abe9b8aSliubo __entry->flags = ordered->flags; 2721abe9b8aSliubo __entry->compress_type = ordered->compress_type; 2731abe9b8aSliubo __entry->refs = atomic_read(&ordered->refs); 2741abe9b8aSliubo __entry->root_objectid = 2751abe9b8aSliubo BTRFS_I(inode)->root->root_key.objectid; 2761abe9b8aSliubo ), 2771abe9b8aSliubo 278*bc074524SJeff Mahoney TP_printk_btrfs("root = %llu(%s), ino = %llu, file_offset = %llu, " 2791abe9b8aSliubo "start = %llu, len = %llu, disk_len = %llu, " 2801abe9b8aSliubo "bytes_left = %llu, flags = %s, compress_type = %d, " 2811abe9b8aSliubo "refs = %d", 2821abe9b8aSliubo show_root_type(__entry->root_objectid), 2831abe9b8aSliubo (unsigned long long)__entry->ino, 2841abe9b8aSliubo (unsigned long long)__entry->file_offset, 2851abe9b8aSliubo (unsigned long long)__entry->start, 2861abe9b8aSliubo (unsigned long long)__entry->len, 2871abe9b8aSliubo (unsigned long long)__entry->disk_len, 2881abe9b8aSliubo (unsigned long long)__entry->bytes_left, 2891abe9b8aSliubo show_ordered_flags(__entry->flags), 2901abe9b8aSliubo __entry->compress_type, __entry->refs) 2911abe9b8aSliubo ); 2921abe9b8aSliubo 2931abe9b8aSliubo DEFINE_EVENT(btrfs__ordered_extent, btrfs_ordered_extent_add, 2941abe9b8aSliubo 2951abe9b8aSliubo TP_PROTO(struct inode *inode, struct btrfs_ordered_extent *ordered), 2961abe9b8aSliubo 2971abe9b8aSliubo TP_ARGS(inode, ordered) 2981abe9b8aSliubo ); 2991abe9b8aSliubo 3001abe9b8aSliubo DEFINE_EVENT(btrfs__ordered_extent, btrfs_ordered_extent_remove, 3011abe9b8aSliubo 3021abe9b8aSliubo TP_PROTO(struct inode *inode, struct btrfs_ordered_extent *ordered), 3031abe9b8aSliubo 3041abe9b8aSliubo TP_ARGS(inode, ordered) 3051abe9b8aSliubo ); 3061abe9b8aSliubo 3071abe9b8aSliubo DEFINE_EVENT(btrfs__ordered_extent, btrfs_ordered_extent_start, 3081abe9b8aSliubo 3091abe9b8aSliubo TP_PROTO(struct inode *inode, struct btrfs_ordered_extent *ordered), 3101abe9b8aSliubo 3111abe9b8aSliubo TP_ARGS(inode, ordered) 3121abe9b8aSliubo ); 3131abe9b8aSliubo 3141abe9b8aSliubo DEFINE_EVENT(btrfs__ordered_extent, btrfs_ordered_extent_put, 3151abe9b8aSliubo 3161abe9b8aSliubo TP_PROTO(struct inode *inode, struct btrfs_ordered_extent *ordered), 3171abe9b8aSliubo 3181abe9b8aSliubo TP_ARGS(inode, ordered) 3191abe9b8aSliubo ); 3201abe9b8aSliubo 3211abe9b8aSliubo DECLARE_EVENT_CLASS(btrfs__writepage, 3221abe9b8aSliubo 3231abe9b8aSliubo TP_PROTO(struct page *page, struct inode *inode, 3241abe9b8aSliubo struct writeback_control *wbc), 3251abe9b8aSliubo 3261abe9b8aSliubo TP_ARGS(page, inode, wbc), 3271abe9b8aSliubo 328*bc074524SJeff Mahoney TP_STRUCT__entry_btrfs( 3291abe9b8aSliubo __field( ino_t, ino ) 3301abe9b8aSliubo __field( pgoff_t, index ) 3311abe9b8aSliubo __field( long, nr_to_write ) 3321abe9b8aSliubo __field( long, pages_skipped ) 3331abe9b8aSliubo __field( loff_t, range_start ) 3341abe9b8aSliubo __field( loff_t, range_end ) 3351abe9b8aSliubo __field( char, for_kupdate ) 3361abe9b8aSliubo __field( char, for_reclaim ) 3371abe9b8aSliubo __field( char, range_cyclic ) 3381abe9b8aSliubo __field( pgoff_t, writeback_index ) 3391abe9b8aSliubo __field( u64, root_objectid ) 3401abe9b8aSliubo ), 3411abe9b8aSliubo 342*bc074524SJeff Mahoney TP_fast_assign_btrfs(btrfs_sb(inode->i_sb), 3431abe9b8aSliubo __entry->ino = inode->i_ino; 3441abe9b8aSliubo __entry->index = page->index; 3451abe9b8aSliubo __entry->nr_to_write = wbc->nr_to_write; 3461abe9b8aSliubo __entry->pages_skipped = wbc->pages_skipped; 3471abe9b8aSliubo __entry->range_start = wbc->range_start; 3481abe9b8aSliubo __entry->range_end = wbc->range_end; 3491abe9b8aSliubo __entry->for_kupdate = wbc->for_kupdate; 3501abe9b8aSliubo __entry->for_reclaim = wbc->for_reclaim; 3511abe9b8aSliubo __entry->range_cyclic = wbc->range_cyclic; 3521abe9b8aSliubo __entry->writeback_index = inode->i_mapping->writeback_index; 3531abe9b8aSliubo __entry->root_objectid = 3541abe9b8aSliubo BTRFS_I(inode)->root->root_key.objectid; 3551abe9b8aSliubo ), 3561abe9b8aSliubo 357*bc074524SJeff Mahoney TP_printk_btrfs("root = %llu(%s), ino = %lu, page_index = %lu, " 3581abe9b8aSliubo "nr_to_write = %ld, pages_skipped = %ld, range_start = %llu, " 359846d5a09SWu Fengguang "range_end = %llu, for_kupdate = %d, " 3601abe9b8aSliubo "for_reclaim = %d, range_cyclic = %d, writeback_index = %lu", 3611abe9b8aSliubo show_root_type(__entry->root_objectid), 3621abe9b8aSliubo (unsigned long)__entry->ino, __entry->index, 3631abe9b8aSliubo __entry->nr_to_write, __entry->pages_skipped, 3641abe9b8aSliubo __entry->range_start, __entry->range_end, 365846d5a09SWu Fengguang __entry->for_kupdate, 3661abe9b8aSliubo __entry->for_reclaim, __entry->range_cyclic, 3671abe9b8aSliubo (unsigned long)__entry->writeback_index) 3681abe9b8aSliubo ); 3691abe9b8aSliubo 3701abe9b8aSliubo DEFINE_EVENT(btrfs__writepage, __extent_writepage, 3711abe9b8aSliubo 3721abe9b8aSliubo TP_PROTO(struct page *page, struct inode *inode, 3731abe9b8aSliubo struct writeback_control *wbc), 3741abe9b8aSliubo 3751abe9b8aSliubo TP_ARGS(page, inode, wbc) 3761abe9b8aSliubo ); 3771abe9b8aSliubo 3781abe9b8aSliubo TRACE_EVENT(btrfs_writepage_end_io_hook, 3791abe9b8aSliubo 3801abe9b8aSliubo TP_PROTO(struct page *page, u64 start, u64 end, int uptodate), 3811abe9b8aSliubo 3821abe9b8aSliubo TP_ARGS(page, start, end, uptodate), 3831abe9b8aSliubo 384*bc074524SJeff Mahoney TP_STRUCT__entry_btrfs( 3851abe9b8aSliubo __field( ino_t, ino ) 3861abe9b8aSliubo __field( pgoff_t, index ) 3871abe9b8aSliubo __field( u64, start ) 3881abe9b8aSliubo __field( u64, end ) 3891abe9b8aSliubo __field( int, uptodate ) 3901abe9b8aSliubo __field( u64, root_objectid ) 3911abe9b8aSliubo ), 3921abe9b8aSliubo 393*bc074524SJeff Mahoney TP_fast_assign_btrfs(btrfs_sb(page->mapping->host->i_sb), 3941abe9b8aSliubo __entry->ino = page->mapping->host->i_ino; 3951abe9b8aSliubo __entry->index = page->index; 3961abe9b8aSliubo __entry->start = start; 3971abe9b8aSliubo __entry->end = end; 3981abe9b8aSliubo __entry->uptodate = uptodate; 3991abe9b8aSliubo __entry->root_objectid = 4001abe9b8aSliubo BTRFS_I(page->mapping->host)->root->root_key.objectid; 4011abe9b8aSliubo ), 4021abe9b8aSliubo 403*bc074524SJeff Mahoney TP_printk_btrfs("root = %llu(%s), ino = %lu, page_index = %lu, start = %llu, " 4041abe9b8aSliubo "end = %llu, uptodate = %d", 4051abe9b8aSliubo show_root_type(__entry->root_objectid), 4061abe9b8aSliubo (unsigned long)__entry->ino, (unsigned long)__entry->index, 4071abe9b8aSliubo (unsigned long long)__entry->start, 4081abe9b8aSliubo (unsigned long long)__entry->end, __entry->uptodate) 4091abe9b8aSliubo ); 4101abe9b8aSliubo 4111abe9b8aSliubo TRACE_EVENT(btrfs_sync_file, 4121abe9b8aSliubo 4131abe9b8aSliubo TP_PROTO(struct file *file, int datasync), 4141abe9b8aSliubo 4151abe9b8aSliubo TP_ARGS(file, datasync), 4161abe9b8aSliubo 417*bc074524SJeff Mahoney TP_STRUCT__entry_btrfs( 4181abe9b8aSliubo __field( ino_t, ino ) 4191abe9b8aSliubo __field( ino_t, parent ) 4201abe9b8aSliubo __field( int, datasync ) 4211abe9b8aSliubo __field( u64, root_objectid ) 4221abe9b8aSliubo ), 4231abe9b8aSliubo 4241abe9b8aSliubo TP_fast_assign( 4251abe9b8aSliubo struct dentry *dentry = file->f_path.dentry; 4262b0143b5SDavid Howells struct inode *inode = d_inode(dentry); 4271abe9b8aSliubo 428*bc074524SJeff Mahoney TP_fast_assign_fsid(btrfs_sb(file->f_path.dentry->d_sb)); 4291abe9b8aSliubo __entry->ino = inode->i_ino; 4302b0143b5SDavid Howells __entry->parent = d_inode(dentry->d_parent)->i_ino; 4311abe9b8aSliubo __entry->datasync = datasync; 4321abe9b8aSliubo __entry->root_objectid = 4331abe9b8aSliubo BTRFS_I(inode)->root->root_key.objectid; 4341abe9b8aSliubo ), 4351abe9b8aSliubo 436*bc074524SJeff Mahoney TP_printk_btrfs("root = %llu(%s), ino = %ld, parent = %ld, datasync = %d", 4371abe9b8aSliubo show_root_type(__entry->root_objectid), 4381abe9b8aSliubo (unsigned long)__entry->ino, (unsigned long)__entry->parent, 4391abe9b8aSliubo __entry->datasync) 4401abe9b8aSliubo ); 4411abe9b8aSliubo 4421abe9b8aSliubo TRACE_EVENT(btrfs_sync_fs, 4431abe9b8aSliubo 444*bc074524SJeff Mahoney TP_PROTO(struct btrfs_fs_info *fs_info, int wait), 4451abe9b8aSliubo 446*bc074524SJeff Mahoney TP_ARGS(fs_info, wait), 4471abe9b8aSliubo 448*bc074524SJeff Mahoney TP_STRUCT__entry_btrfs( 4491abe9b8aSliubo __field( int, wait ) 4501abe9b8aSliubo ), 4511abe9b8aSliubo 452*bc074524SJeff Mahoney TP_fast_assign_btrfs(fs_info, 4531abe9b8aSliubo __entry->wait = wait; 4541abe9b8aSliubo ), 4551abe9b8aSliubo 456*bc074524SJeff Mahoney TP_printk_btrfs("wait = %d", __entry->wait) 4571abe9b8aSliubo ); 4581abe9b8aSliubo 459c83f8effSJosef Bacik TRACE_EVENT(btrfs_add_block_group, 460c83f8effSJosef Bacik 461c83f8effSJosef Bacik TP_PROTO(struct btrfs_fs_info *fs_info, 462c83f8effSJosef Bacik struct btrfs_block_group_cache *block_group, int create), 463c83f8effSJosef Bacik 464c83f8effSJosef Bacik TP_ARGS(fs_info, block_group, create), 465c83f8effSJosef Bacik 466c83f8effSJosef Bacik TP_STRUCT__entry( 467c83f8effSJosef Bacik __array( u8, fsid, BTRFS_UUID_SIZE ) 468c83f8effSJosef Bacik __field( u64, offset ) 469c83f8effSJosef Bacik __field( u64, size ) 470c83f8effSJosef Bacik __field( u64, flags ) 471c83f8effSJosef Bacik __field( u64, bytes_used ) 472c83f8effSJosef Bacik __field( u64, bytes_super ) 473c83f8effSJosef Bacik __field( int, create ) 474c83f8effSJosef Bacik ), 475c83f8effSJosef Bacik 476c83f8effSJosef Bacik TP_fast_assign( 477c83f8effSJosef Bacik memcpy(__entry->fsid, fs_info->fsid, BTRFS_UUID_SIZE); 478c83f8effSJosef Bacik __entry->offset = block_group->key.objectid; 479c83f8effSJosef Bacik __entry->size = block_group->key.offset; 480c83f8effSJosef Bacik __entry->flags = block_group->flags; 481c83f8effSJosef Bacik __entry->bytes_used = 482c83f8effSJosef Bacik btrfs_block_group_used(&block_group->item); 483c83f8effSJosef Bacik __entry->bytes_super = block_group->bytes_super; 484c83f8effSJosef Bacik __entry->create = create; 485c83f8effSJosef Bacik ), 486c83f8effSJosef Bacik 487c83f8effSJosef Bacik TP_printk("%pU: block_group offset = %llu, size = %llu, " 488c83f8effSJosef Bacik "flags = %llu(%s), bytes_used = %llu, bytes_super = %llu, " 489c83f8effSJosef Bacik "create = %d", __entry->fsid, 490c83f8effSJosef Bacik (unsigned long long)__entry->offset, 491c83f8effSJosef Bacik (unsigned long long)__entry->size, 492c83f8effSJosef Bacik (unsigned long long)__entry->flags, 493c83f8effSJosef Bacik __print_flags((unsigned long)__entry->flags, "|", 494c83f8effSJosef Bacik BTRFS_GROUP_FLAGS), 495c83f8effSJosef Bacik (unsigned long long)__entry->bytes_used, 496c83f8effSJosef Bacik (unsigned long long)__entry->bytes_super, __entry->create) 497c83f8effSJosef Bacik ); 498c83f8effSJosef Bacik 4991abe9b8aSliubo #define show_ref_action(action) \ 5001abe9b8aSliubo __print_symbolic(action, \ 5011abe9b8aSliubo { BTRFS_ADD_DELAYED_REF, "ADD_DELAYED_REF" }, \ 5021abe9b8aSliubo { BTRFS_DROP_DELAYED_REF, "DROP_DELAYED_REF" }, \ 5031abe9b8aSliubo { BTRFS_ADD_DELAYED_EXTENT, "ADD_DELAYED_EXTENT" }, \ 5041abe9b8aSliubo { BTRFS_UPDATE_DELAYED_HEAD, "UPDATE_DELAYED_HEAD" }) 5051abe9b8aSliubo 5061abe9b8aSliubo 507599c75ecSLiu Bo DECLARE_EVENT_CLASS(btrfs_delayed_tree_ref, 5081abe9b8aSliubo 509*bc074524SJeff Mahoney TP_PROTO(struct btrfs_fs_info *fs_info, 510*bc074524SJeff Mahoney struct btrfs_delayed_ref_node *ref, 5111abe9b8aSliubo struct btrfs_delayed_tree_ref *full_ref, 5121abe9b8aSliubo int action), 5131abe9b8aSliubo 514*bc074524SJeff Mahoney TP_ARGS(fs_info, ref, full_ref, action), 5151abe9b8aSliubo 516*bc074524SJeff Mahoney TP_STRUCT__entry_btrfs( 5171abe9b8aSliubo __field( u64, bytenr ) 5181abe9b8aSliubo __field( u64, num_bytes ) 5191abe9b8aSliubo __field( int, action ) 5201abe9b8aSliubo __field( u64, parent ) 5211abe9b8aSliubo __field( u64, ref_root ) 5221abe9b8aSliubo __field( int, level ) 5231abe9b8aSliubo __field( int, type ) 524dea7d76eSLiu Bo __field( u64, seq ) 5251abe9b8aSliubo ), 5261abe9b8aSliubo 527*bc074524SJeff Mahoney TP_fast_assign_btrfs(fs_info, 5281abe9b8aSliubo __entry->bytenr = ref->bytenr; 5291abe9b8aSliubo __entry->num_bytes = ref->num_bytes; 5301abe9b8aSliubo __entry->action = action; 5311abe9b8aSliubo __entry->parent = full_ref->parent; 5321abe9b8aSliubo __entry->ref_root = full_ref->root; 5331abe9b8aSliubo __entry->level = full_ref->level; 5341abe9b8aSliubo __entry->type = ref->type; 535dea7d76eSLiu Bo __entry->seq = ref->seq; 5361abe9b8aSliubo ), 5371abe9b8aSliubo 538*bc074524SJeff Mahoney TP_printk_btrfs("bytenr = %llu, num_bytes = %llu, action = %s, " 5391abe9b8aSliubo "parent = %llu(%s), ref_root = %llu(%s), level = %d, " 540dea7d76eSLiu Bo "type = %s, seq = %llu", 5411abe9b8aSliubo (unsigned long long)__entry->bytenr, 5421abe9b8aSliubo (unsigned long long)__entry->num_bytes, 5431abe9b8aSliubo show_ref_action(__entry->action), 5441abe9b8aSliubo show_root_type(__entry->parent), 5451abe9b8aSliubo show_root_type(__entry->ref_root), 546dea7d76eSLiu Bo __entry->level, show_ref_type(__entry->type), 547dea7d76eSLiu Bo (unsigned long long)__entry->seq) 5481abe9b8aSliubo ); 5491abe9b8aSliubo 550599c75ecSLiu Bo DEFINE_EVENT(btrfs_delayed_tree_ref, add_delayed_tree_ref, 551599c75ecSLiu Bo 552*bc074524SJeff Mahoney TP_PROTO(struct btrfs_fs_info *fs_info, 553*bc074524SJeff Mahoney struct btrfs_delayed_ref_node *ref, 554599c75ecSLiu Bo struct btrfs_delayed_tree_ref *full_ref, 555599c75ecSLiu Bo int action), 556599c75ecSLiu Bo 557*bc074524SJeff Mahoney TP_ARGS(fs_info, ref, full_ref, action) 558599c75ecSLiu Bo ); 559599c75ecSLiu Bo 560599c75ecSLiu Bo DEFINE_EVENT(btrfs_delayed_tree_ref, run_delayed_tree_ref, 561599c75ecSLiu Bo 562*bc074524SJeff Mahoney TP_PROTO(struct btrfs_fs_info *fs_info, 563*bc074524SJeff Mahoney struct btrfs_delayed_ref_node *ref, 564599c75ecSLiu Bo struct btrfs_delayed_tree_ref *full_ref, 565599c75ecSLiu Bo int action), 566599c75ecSLiu Bo 567*bc074524SJeff Mahoney TP_ARGS(fs_info, ref, full_ref, action) 568599c75ecSLiu Bo ); 569599c75ecSLiu Bo 570599c75ecSLiu Bo DECLARE_EVENT_CLASS(btrfs_delayed_data_ref, 5711abe9b8aSliubo 572*bc074524SJeff Mahoney TP_PROTO(struct btrfs_fs_info *fs_info, 573*bc074524SJeff Mahoney struct btrfs_delayed_ref_node *ref, 5741abe9b8aSliubo struct btrfs_delayed_data_ref *full_ref, 5751abe9b8aSliubo int action), 5761abe9b8aSliubo 577*bc074524SJeff Mahoney TP_ARGS(fs_info, ref, full_ref, action), 5781abe9b8aSliubo 579*bc074524SJeff Mahoney TP_STRUCT__entry_btrfs( 5801abe9b8aSliubo __field( u64, bytenr ) 5811abe9b8aSliubo __field( u64, num_bytes ) 5821abe9b8aSliubo __field( int, action ) 5831abe9b8aSliubo __field( u64, parent ) 5841abe9b8aSliubo __field( u64, ref_root ) 5851abe9b8aSliubo __field( u64, owner ) 5861abe9b8aSliubo __field( u64, offset ) 5871abe9b8aSliubo __field( int, type ) 588dea7d76eSLiu Bo __field( u64, seq ) 5891abe9b8aSliubo ), 5901abe9b8aSliubo 591*bc074524SJeff Mahoney TP_fast_assign_btrfs(fs_info, 5921abe9b8aSliubo __entry->bytenr = ref->bytenr; 5931abe9b8aSliubo __entry->num_bytes = ref->num_bytes; 5941abe9b8aSliubo __entry->action = action; 5951abe9b8aSliubo __entry->parent = full_ref->parent; 5961abe9b8aSliubo __entry->ref_root = full_ref->root; 5971abe9b8aSliubo __entry->owner = full_ref->objectid; 5981abe9b8aSliubo __entry->offset = full_ref->offset; 5991abe9b8aSliubo __entry->type = ref->type; 600dea7d76eSLiu Bo __entry->seq = ref->seq; 6011abe9b8aSliubo ), 6021abe9b8aSliubo 603*bc074524SJeff Mahoney TP_printk_btrfs("bytenr = %llu, num_bytes = %llu, action = %s, " 6041abe9b8aSliubo "parent = %llu(%s), ref_root = %llu(%s), owner = %llu, " 605dea7d76eSLiu Bo "offset = %llu, type = %s, seq = %llu", 6061abe9b8aSliubo (unsigned long long)__entry->bytenr, 6071abe9b8aSliubo (unsigned long long)__entry->num_bytes, 6081abe9b8aSliubo show_ref_action(__entry->action), 6091abe9b8aSliubo show_root_type(__entry->parent), 6101abe9b8aSliubo show_root_type(__entry->ref_root), 6111abe9b8aSliubo (unsigned long long)__entry->owner, 6121abe9b8aSliubo (unsigned long long)__entry->offset, 613dea7d76eSLiu Bo show_ref_type(__entry->type), 614dea7d76eSLiu Bo (unsigned long long)__entry->seq) 6151abe9b8aSliubo ); 6161abe9b8aSliubo 617599c75ecSLiu Bo DEFINE_EVENT(btrfs_delayed_data_ref, add_delayed_data_ref, 618599c75ecSLiu Bo 619*bc074524SJeff Mahoney TP_PROTO(struct btrfs_fs_info *fs_info, 620*bc074524SJeff Mahoney struct btrfs_delayed_ref_node *ref, 621599c75ecSLiu Bo struct btrfs_delayed_data_ref *full_ref, 622599c75ecSLiu Bo int action), 623599c75ecSLiu Bo 624*bc074524SJeff Mahoney TP_ARGS(fs_info, ref, full_ref, action) 625599c75ecSLiu Bo ); 626599c75ecSLiu Bo 627599c75ecSLiu Bo DEFINE_EVENT(btrfs_delayed_data_ref, run_delayed_data_ref, 628599c75ecSLiu Bo 629*bc074524SJeff Mahoney TP_PROTO(struct btrfs_fs_info *fs_info, 630*bc074524SJeff Mahoney struct btrfs_delayed_ref_node *ref, 631599c75ecSLiu Bo struct btrfs_delayed_data_ref *full_ref, 632599c75ecSLiu Bo int action), 633599c75ecSLiu Bo 634*bc074524SJeff Mahoney TP_ARGS(fs_info, ref, full_ref, action) 635599c75ecSLiu Bo ); 636599c75ecSLiu Bo 637599c75ecSLiu Bo DECLARE_EVENT_CLASS(btrfs_delayed_ref_head, 6381abe9b8aSliubo 639*bc074524SJeff Mahoney TP_PROTO(struct btrfs_fs_info *fs_info, 640*bc074524SJeff Mahoney struct btrfs_delayed_ref_node *ref, 6411abe9b8aSliubo struct btrfs_delayed_ref_head *head_ref, 6421abe9b8aSliubo int action), 6431abe9b8aSliubo 644*bc074524SJeff Mahoney TP_ARGS(fs_info, ref, head_ref, action), 6451abe9b8aSliubo 646*bc074524SJeff Mahoney TP_STRUCT__entry_btrfs( 6471abe9b8aSliubo __field( u64, bytenr ) 6481abe9b8aSliubo __field( u64, num_bytes ) 6491abe9b8aSliubo __field( int, action ) 6501abe9b8aSliubo __field( int, is_data ) 6511abe9b8aSliubo ), 6521abe9b8aSliubo 653*bc074524SJeff Mahoney TP_fast_assign_btrfs(fs_info, 6541abe9b8aSliubo __entry->bytenr = ref->bytenr; 6551abe9b8aSliubo __entry->num_bytes = ref->num_bytes; 6561abe9b8aSliubo __entry->action = action; 6571abe9b8aSliubo __entry->is_data = head_ref->is_data; 6581abe9b8aSliubo ), 6591abe9b8aSliubo 660*bc074524SJeff Mahoney TP_printk_btrfs("bytenr = %llu, num_bytes = %llu, action = %s, is_data = %d", 6611abe9b8aSliubo (unsigned long long)__entry->bytenr, 6621abe9b8aSliubo (unsigned long long)__entry->num_bytes, 6631abe9b8aSliubo show_ref_action(__entry->action), 6641abe9b8aSliubo __entry->is_data) 6651abe9b8aSliubo ); 6661abe9b8aSliubo 667599c75ecSLiu Bo DEFINE_EVENT(btrfs_delayed_ref_head, add_delayed_ref_head, 668599c75ecSLiu Bo 669*bc074524SJeff Mahoney TP_PROTO(struct btrfs_fs_info *fs_info, 670*bc074524SJeff Mahoney struct btrfs_delayed_ref_node *ref, 671599c75ecSLiu Bo struct btrfs_delayed_ref_head *head_ref, 672599c75ecSLiu Bo int action), 673599c75ecSLiu Bo 674*bc074524SJeff Mahoney TP_ARGS(fs_info, ref, head_ref, action) 675599c75ecSLiu Bo ); 676599c75ecSLiu Bo 677599c75ecSLiu Bo DEFINE_EVENT(btrfs_delayed_ref_head, run_delayed_ref_head, 678599c75ecSLiu Bo 679*bc074524SJeff Mahoney TP_PROTO(struct btrfs_fs_info *fs_info, 680*bc074524SJeff Mahoney struct btrfs_delayed_ref_node *ref, 681599c75ecSLiu Bo struct btrfs_delayed_ref_head *head_ref, 682599c75ecSLiu Bo int action), 683599c75ecSLiu Bo 684*bc074524SJeff Mahoney TP_ARGS(fs_info, ref, head_ref, action) 685599c75ecSLiu Bo ); 686599c75ecSLiu Bo 6871abe9b8aSliubo #define show_chunk_type(type) \ 6881abe9b8aSliubo __print_flags(type, "|", \ 6891abe9b8aSliubo { BTRFS_BLOCK_GROUP_DATA, "DATA" }, \ 6901abe9b8aSliubo { BTRFS_BLOCK_GROUP_SYSTEM, "SYSTEM"}, \ 6911abe9b8aSliubo { BTRFS_BLOCK_GROUP_METADATA, "METADATA"}, \ 6921abe9b8aSliubo { BTRFS_BLOCK_GROUP_RAID0, "RAID0" }, \ 6931abe9b8aSliubo { BTRFS_BLOCK_GROUP_RAID1, "RAID1" }, \ 6941abe9b8aSliubo { BTRFS_BLOCK_GROUP_DUP, "DUP" }, \ 695e112e2b4SLiu Bo { BTRFS_BLOCK_GROUP_RAID10, "RAID10"}, \ 696e112e2b4SLiu Bo { BTRFS_BLOCK_GROUP_RAID5, "RAID5" }, \ 697e112e2b4SLiu Bo { BTRFS_BLOCK_GROUP_RAID6, "RAID6" }) 6981abe9b8aSliubo 6991abe9b8aSliubo DECLARE_EVENT_CLASS(btrfs__chunk, 7001abe9b8aSliubo 7011abe9b8aSliubo TP_PROTO(struct btrfs_root *root, struct map_lookup *map, 7021abe9b8aSliubo u64 offset, u64 size), 7031abe9b8aSliubo 7041abe9b8aSliubo TP_ARGS(root, map, offset, size), 7051abe9b8aSliubo 706*bc074524SJeff Mahoney TP_STRUCT__entry_btrfs( 7071abe9b8aSliubo __field( int, num_stripes ) 7081abe9b8aSliubo __field( u64, type ) 7091abe9b8aSliubo __field( int, sub_stripes ) 7101abe9b8aSliubo __field( u64, offset ) 7111abe9b8aSliubo __field( u64, size ) 7121abe9b8aSliubo __field( u64, root_objectid ) 7131abe9b8aSliubo ), 7141abe9b8aSliubo 715*bc074524SJeff Mahoney TP_fast_assign_btrfs(root->fs_info, 7161abe9b8aSliubo __entry->num_stripes = map->num_stripes; 7171abe9b8aSliubo __entry->type = map->type; 7181abe9b8aSliubo __entry->sub_stripes = map->sub_stripes; 7191abe9b8aSliubo __entry->offset = offset; 7201abe9b8aSliubo __entry->size = size; 7211abe9b8aSliubo __entry->root_objectid = root->root_key.objectid; 7221abe9b8aSliubo ), 7231abe9b8aSliubo 724*bc074524SJeff Mahoney TP_printk_btrfs("root = %llu(%s), offset = %llu, size = %llu, " 7251abe9b8aSliubo "num_stripes = %d, sub_stripes = %d, type = %s", 7261abe9b8aSliubo show_root_type(__entry->root_objectid), 7271abe9b8aSliubo (unsigned long long)__entry->offset, 7281abe9b8aSliubo (unsigned long long)__entry->size, 7291abe9b8aSliubo __entry->num_stripes, __entry->sub_stripes, 7301abe9b8aSliubo show_chunk_type(__entry->type)) 7311abe9b8aSliubo ); 7321abe9b8aSliubo 7331abe9b8aSliubo DEFINE_EVENT(btrfs__chunk, btrfs_chunk_alloc, 7341abe9b8aSliubo 7351abe9b8aSliubo TP_PROTO(struct btrfs_root *root, struct map_lookup *map, 7361abe9b8aSliubo u64 offset, u64 size), 7371abe9b8aSliubo 7381abe9b8aSliubo TP_ARGS(root, map, offset, size) 7391abe9b8aSliubo ); 7401abe9b8aSliubo 7411abe9b8aSliubo DEFINE_EVENT(btrfs__chunk, btrfs_chunk_free, 7421abe9b8aSliubo 7431abe9b8aSliubo TP_PROTO(struct btrfs_root *root, struct map_lookup *map, 7441abe9b8aSliubo u64 offset, u64 size), 7451abe9b8aSliubo 7461abe9b8aSliubo TP_ARGS(root, map, offset, size) 7471abe9b8aSliubo ); 7481abe9b8aSliubo 7491abe9b8aSliubo TRACE_EVENT(btrfs_cow_block, 7501abe9b8aSliubo 7511abe9b8aSliubo TP_PROTO(struct btrfs_root *root, struct extent_buffer *buf, 7521abe9b8aSliubo struct extent_buffer *cow), 7531abe9b8aSliubo 7541abe9b8aSliubo TP_ARGS(root, buf, cow), 7551abe9b8aSliubo 756*bc074524SJeff Mahoney TP_STRUCT__entry_btrfs( 7571abe9b8aSliubo __field( u64, root_objectid ) 7581abe9b8aSliubo __field( u64, buf_start ) 7591abe9b8aSliubo __field( int, refs ) 7601abe9b8aSliubo __field( u64, cow_start ) 7611abe9b8aSliubo __field( int, buf_level ) 7621abe9b8aSliubo __field( int, cow_level ) 7631abe9b8aSliubo ), 7641abe9b8aSliubo 765*bc074524SJeff Mahoney TP_fast_assign_btrfs(root->fs_info, 7661abe9b8aSliubo __entry->root_objectid = root->root_key.objectid; 7671abe9b8aSliubo __entry->buf_start = buf->start; 7681abe9b8aSliubo __entry->refs = atomic_read(&buf->refs); 7691abe9b8aSliubo __entry->cow_start = cow->start; 7701abe9b8aSliubo __entry->buf_level = btrfs_header_level(buf); 7711abe9b8aSliubo __entry->cow_level = btrfs_header_level(cow); 7721abe9b8aSliubo ), 7731abe9b8aSliubo 774*bc074524SJeff Mahoney TP_printk_btrfs("root = %llu(%s), refs = %d, orig_buf = %llu " 7751abe9b8aSliubo "(orig_level = %d), cow_buf = %llu (cow_level = %d)", 7761abe9b8aSliubo show_root_type(__entry->root_objectid), 7771abe9b8aSliubo __entry->refs, 7781abe9b8aSliubo (unsigned long long)__entry->buf_start, 7791abe9b8aSliubo __entry->buf_level, 7801abe9b8aSliubo (unsigned long long)__entry->cow_start, 7811abe9b8aSliubo __entry->cow_level) 7821abe9b8aSliubo ); 7831abe9b8aSliubo 7848c2a3ca2SJosef Bacik TRACE_EVENT(btrfs_space_reservation, 7858c2a3ca2SJosef Bacik 7868c2a3ca2SJosef Bacik TP_PROTO(struct btrfs_fs_info *fs_info, char *type, u64 val, 7878c2a3ca2SJosef Bacik u64 bytes, int reserve), 7888c2a3ca2SJosef Bacik 7898c2a3ca2SJosef Bacik TP_ARGS(fs_info, type, val, bytes, reserve), 7908c2a3ca2SJosef Bacik 791*bc074524SJeff Mahoney TP_STRUCT__entry_btrfs( 7928c2a3ca2SJosef Bacik __string( type, type ) 7938c2a3ca2SJosef Bacik __field( u64, val ) 7948c2a3ca2SJosef Bacik __field( u64, bytes ) 7958c2a3ca2SJosef Bacik __field( int, reserve ) 7968c2a3ca2SJosef Bacik ), 7978c2a3ca2SJosef Bacik 798*bc074524SJeff Mahoney TP_fast_assign_btrfs(fs_info, 7998c2a3ca2SJosef Bacik __assign_str(type, type); 8008c2a3ca2SJosef Bacik __entry->val = val; 8018c2a3ca2SJosef Bacik __entry->bytes = bytes; 8028c2a3ca2SJosef Bacik __entry->reserve = reserve; 8038c2a3ca2SJosef Bacik ), 8048c2a3ca2SJosef Bacik 805*bc074524SJeff Mahoney TP_printk_btrfs("%s: %Lu %s %Lu", __get_str(type), __entry->val, 806*bc074524SJeff Mahoney __entry->reserve ? "reserve" : "release", 8078c2a3ca2SJosef Bacik __entry->bytes) 8088c2a3ca2SJosef Bacik ); 8098c2a3ca2SJosef Bacik 810f376df2bSJosef Bacik #define show_flush_action(action) \ 811f376df2bSJosef Bacik __print_symbolic(action, \ 812f376df2bSJosef Bacik { BTRFS_RESERVE_NO_FLUSH, "BTRFS_RESERVE_NO_FLUSH"}, \ 813f376df2bSJosef Bacik { BTRFS_RESERVE_FLUSH_LIMIT, "BTRFS_RESERVE_FLUSH_LIMIT"}, \ 814f376df2bSJosef Bacik { BTRFS_RESERVE_FLUSH_ALL, "BTRFS_RESERVE_FLUSH_ALL"}) 815f376df2bSJosef Bacik 816f376df2bSJosef Bacik TRACE_EVENT(btrfs_trigger_flush, 817f376df2bSJosef Bacik 818f376df2bSJosef Bacik TP_PROTO(struct btrfs_fs_info *fs_info, u64 flags, u64 bytes, 819f376df2bSJosef Bacik int flush, char *reason), 820f376df2bSJosef Bacik 821f376df2bSJosef Bacik TP_ARGS(fs_info, flags, bytes, flush, reason), 822f376df2bSJosef Bacik 823f376df2bSJosef Bacik TP_STRUCT__entry( 824f376df2bSJosef Bacik __array( u8, fsid, BTRFS_UUID_SIZE ) 825f376df2bSJosef Bacik __field( u64, flags ) 826f376df2bSJosef Bacik __field( u64, bytes ) 827f376df2bSJosef Bacik __field( int, flush ) 828f376df2bSJosef Bacik __string( reason, reason ) 829f376df2bSJosef Bacik ), 830f376df2bSJosef Bacik 831f376df2bSJosef Bacik TP_fast_assign( 832f376df2bSJosef Bacik memcpy(__entry->fsid, fs_info->fsid, BTRFS_UUID_SIZE); 833f376df2bSJosef Bacik __entry->flags = flags; 834f376df2bSJosef Bacik __entry->bytes = bytes; 835f376df2bSJosef Bacik __entry->flush = flush; 836f376df2bSJosef Bacik __assign_str(reason, reason) 837f376df2bSJosef Bacik ), 838f376df2bSJosef Bacik 839f376df2bSJosef Bacik TP_printk("%pU: %s: flush = %d(%s), flags = %llu(%s), bytes = %llu", 840f376df2bSJosef Bacik __entry->fsid, __get_str(reason), __entry->flush, 841f376df2bSJosef Bacik show_flush_action(__entry->flush), 842f376df2bSJosef Bacik (unsigned long long)__entry->flags, 843f376df2bSJosef Bacik __print_flags((unsigned long)__entry->flags, "|", 844f376df2bSJosef Bacik BTRFS_GROUP_FLAGS), 845f376df2bSJosef Bacik (unsigned long long)__entry->bytes) 846f376df2bSJosef Bacik ); 847f376df2bSJosef Bacik 848f376df2bSJosef Bacik #define show_flush_state(state) \ 849f376df2bSJosef Bacik __print_symbolic(state, \ 850f376df2bSJosef Bacik { FLUSH_DELAYED_ITEMS_NR, "FLUSH_DELAYED_ITEMS_NR"}, \ 851f376df2bSJosef Bacik { FLUSH_DELAYED_ITEMS, "FLUSH_DELAYED_ITEMS"}, \ 852f376df2bSJosef Bacik { FLUSH_DELALLOC, "FLUSH_DELALLOC"}, \ 853f376df2bSJosef Bacik { FLUSH_DELALLOC_WAIT, "FLUSH_DELALLOC_WAIT"}, \ 854f376df2bSJosef Bacik { ALLOC_CHUNK, "ALLOC_CHUNK"}, \ 855f376df2bSJosef Bacik { COMMIT_TRANS, "COMMIT_TRANS"}) 856f376df2bSJosef Bacik 857f376df2bSJosef Bacik TRACE_EVENT(btrfs_flush_space, 858f376df2bSJosef Bacik 859f376df2bSJosef Bacik TP_PROTO(struct btrfs_fs_info *fs_info, u64 flags, u64 num_bytes, 860f376df2bSJosef Bacik u64 orig_bytes, int state, int ret), 861f376df2bSJosef Bacik 862f376df2bSJosef Bacik TP_ARGS(fs_info, flags, num_bytes, orig_bytes, state, ret), 863f376df2bSJosef Bacik 864f376df2bSJosef Bacik TP_STRUCT__entry( 865f376df2bSJosef Bacik __array( u8, fsid, BTRFS_UUID_SIZE ) 866f376df2bSJosef Bacik __field( u64, flags ) 867f376df2bSJosef Bacik __field( u64, num_bytes ) 868f376df2bSJosef Bacik __field( u64, orig_bytes ) 869f376df2bSJosef Bacik __field( int, state ) 870f376df2bSJosef Bacik __field( int, ret ) 871f376df2bSJosef Bacik ), 872f376df2bSJosef Bacik 873f376df2bSJosef Bacik TP_fast_assign( 874f376df2bSJosef Bacik memcpy(__entry->fsid, fs_info->fsid, BTRFS_UUID_SIZE); 875f376df2bSJosef Bacik __entry->flags = flags; 876f376df2bSJosef Bacik __entry->num_bytes = num_bytes; 877f376df2bSJosef Bacik __entry->orig_bytes = orig_bytes; 878f376df2bSJosef Bacik __entry->state = state; 879f376df2bSJosef Bacik __entry->ret = ret; 880f376df2bSJosef Bacik ), 881f376df2bSJosef Bacik 882f376df2bSJosef Bacik TP_printk("%pU: state = %d(%s), flags = %llu(%s), num_bytes = %llu, " 883f376df2bSJosef Bacik "orig_bytes = %llu, ret = %d", __entry->fsid, __entry->state, 884f376df2bSJosef Bacik show_flush_state(__entry->state), 885f376df2bSJosef Bacik (unsigned long long)__entry->flags, 886f376df2bSJosef Bacik __print_flags((unsigned long)__entry->flags, "|", 887f376df2bSJosef Bacik BTRFS_GROUP_FLAGS), 888f376df2bSJosef Bacik (unsigned long long)__entry->num_bytes, 889f376df2bSJosef Bacik (unsigned long long)__entry->orig_bytes, __entry->ret) 890f376df2bSJosef Bacik ); 891f376df2bSJosef Bacik 8921abe9b8aSliubo DECLARE_EVENT_CLASS(btrfs__reserved_extent, 8931abe9b8aSliubo 8941abe9b8aSliubo TP_PROTO(struct btrfs_root *root, u64 start, u64 len), 8951abe9b8aSliubo 8961abe9b8aSliubo TP_ARGS(root, start, len), 8971abe9b8aSliubo 898*bc074524SJeff Mahoney TP_STRUCT__entry_btrfs( 8991abe9b8aSliubo __field( u64, root_objectid ) 9001abe9b8aSliubo __field( u64, start ) 9011abe9b8aSliubo __field( u64, len ) 9021abe9b8aSliubo ), 9031abe9b8aSliubo 904*bc074524SJeff Mahoney TP_fast_assign_btrfs(root->fs_info, 9051abe9b8aSliubo __entry->root_objectid = root->root_key.objectid; 9061abe9b8aSliubo __entry->start = start; 9071abe9b8aSliubo __entry->len = len; 9081abe9b8aSliubo ), 9091abe9b8aSliubo 910*bc074524SJeff Mahoney TP_printk_btrfs("root = %llu(%s), start = %llu, len = %llu", 9111abe9b8aSliubo show_root_type(__entry->root_objectid), 9121abe9b8aSliubo (unsigned long long)__entry->start, 9131abe9b8aSliubo (unsigned long long)__entry->len) 9141abe9b8aSliubo ); 9151abe9b8aSliubo 9161abe9b8aSliubo DEFINE_EVENT(btrfs__reserved_extent, btrfs_reserved_extent_alloc, 9171abe9b8aSliubo 9181abe9b8aSliubo TP_PROTO(struct btrfs_root *root, u64 start, u64 len), 9191abe9b8aSliubo 9201abe9b8aSliubo TP_ARGS(root, start, len) 9211abe9b8aSliubo ); 9221abe9b8aSliubo 9231abe9b8aSliubo DEFINE_EVENT(btrfs__reserved_extent, btrfs_reserved_extent_free, 9241abe9b8aSliubo 9251abe9b8aSliubo TP_PROTO(struct btrfs_root *root, u64 start, u64 len), 9261abe9b8aSliubo 9271abe9b8aSliubo TP_ARGS(root, start, len) 9281abe9b8aSliubo ); 9291abe9b8aSliubo 9303f7de037SJosef Bacik TRACE_EVENT(find_free_extent, 9313f7de037SJosef Bacik 9323f7de037SJosef Bacik TP_PROTO(struct btrfs_root *root, u64 num_bytes, u64 empty_size, 9333f7de037SJosef Bacik u64 data), 9343f7de037SJosef Bacik 9353f7de037SJosef Bacik TP_ARGS(root, num_bytes, empty_size, data), 9363f7de037SJosef Bacik 937*bc074524SJeff Mahoney TP_STRUCT__entry_btrfs( 9383f7de037SJosef Bacik __field( u64, root_objectid ) 9393f7de037SJosef Bacik __field( u64, num_bytes ) 9403f7de037SJosef Bacik __field( u64, empty_size ) 9413f7de037SJosef Bacik __field( u64, data ) 9423f7de037SJosef Bacik ), 9433f7de037SJosef Bacik 944*bc074524SJeff Mahoney TP_fast_assign_btrfs(root->fs_info, 9453f7de037SJosef Bacik __entry->root_objectid = root->root_key.objectid; 9463f7de037SJosef Bacik __entry->num_bytes = num_bytes; 9473f7de037SJosef Bacik __entry->empty_size = empty_size; 9483f7de037SJosef Bacik __entry->data = data; 9493f7de037SJosef Bacik ), 9503f7de037SJosef Bacik 951*bc074524SJeff Mahoney TP_printk_btrfs("root = %Lu(%s), len = %Lu, empty_size = %Lu, " 9523f7de037SJosef Bacik "flags = %Lu(%s)", show_root_type(__entry->root_objectid), 9533f7de037SJosef Bacik __entry->num_bytes, __entry->empty_size, __entry->data, 9543f7de037SJosef Bacik __print_flags((unsigned long)__entry->data, "|", 9553f7de037SJosef Bacik BTRFS_GROUP_FLAGS)) 9563f7de037SJosef Bacik ); 9573f7de037SJosef Bacik 9583f7de037SJosef Bacik DECLARE_EVENT_CLASS(btrfs__reserve_extent, 9593f7de037SJosef Bacik 9603f7de037SJosef Bacik TP_PROTO(struct btrfs_root *root, 9613f7de037SJosef Bacik struct btrfs_block_group_cache *block_group, u64 start, 9623f7de037SJosef Bacik u64 len), 9633f7de037SJosef Bacik 9643f7de037SJosef Bacik TP_ARGS(root, block_group, start, len), 9653f7de037SJosef Bacik 966*bc074524SJeff Mahoney TP_STRUCT__entry_btrfs( 9673f7de037SJosef Bacik __field( u64, root_objectid ) 9683f7de037SJosef Bacik __field( u64, bg_objectid ) 9693f7de037SJosef Bacik __field( u64, flags ) 9703f7de037SJosef Bacik __field( u64, start ) 9713f7de037SJosef Bacik __field( u64, len ) 9723f7de037SJosef Bacik ), 9733f7de037SJosef Bacik 974*bc074524SJeff Mahoney TP_fast_assign_btrfs(root->fs_info, 9753f7de037SJosef Bacik __entry->root_objectid = root->root_key.objectid; 9763f7de037SJosef Bacik __entry->bg_objectid = block_group->key.objectid; 9773f7de037SJosef Bacik __entry->flags = block_group->flags; 9783f7de037SJosef Bacik __entry->start = start; 9793f7de037SJosef Bacik __entry->len = len; 9803f7de037SJosef Bacik ), 9813f7de037SJosef Bacik 982*bc074524SJeff Mahoney TP_printk_btrfs("root = %Lu(%s), block_group = %Lu, flags = %Lu(%s), " 983*bc074524SJeff Mahoney "start = %Lu, len = %Lu", 9843f7de037SJosef Bacik show_root_type(__entry->root_objectid), __entry->bg_objectid, 9853f7de037SJosef Bacik __entry->flags, __print_flags((unsigned long)__entry->flags, 9863f7de037SJosef Bacik "|", BTRFS_GROUP_FLAGS), 9873f7de037SJosef Bacik __entry->start, __entry->len) 9883f7de037SJosef Bacik ); 9893f7de037SJosef Bacik 9903f7de037SJosef Bacik DEFINE_EVENT(btrfs__reserve_extent, btrfs_reserve_extent, 9913f7de037SJosef Bacik 9923f7de037SJosef Bacik TP_PROTO(struct btrfs_root *root, 9933f7de037SJosef Bacik struct btrfs_block_group_cache *block_group, u64 start, 9943f7de037SJosef Bacik u64 len), 9953f7de037SJosef Bacik 9963f7de037SJosef Bacik TP_ARGS(root, block_group, start, len) 9973f7de037SJosef Bacik ); 9983f7de037SJosef Bacik 9993f7de037SJosef Bacik DEFINE_EVENT(btrfs__reserve_extent, btrfs_reserve_extent_cluster, 10003f7de037SJosef Bacik 10013f7de037SJosef Bacik TP_PROTO(struct btrfs_root *root, 10023f7de037SJosef Bacik struct btrfs_block_group_cache *block_group, u64 start, 10033f7de037SJosef Bacik u64 len), 10043f7de037SJosef Bacik 10053f7de037SJosef Bacik TP_ARGS(root, block_group, start, len) 10063f7de037SJosef Bacik ); 10073f7de037SJosef Bacik 10083f7de037SJosef Bacik TRACE_EVENT(btrfs_find_cluster, 10093f7de037SJosef Bacik 10103f7de037SJosef Bacik TP_PROTO(struct btrfs_block_group_cache *block_group, u64 start, 10113f7de037SJosef Bacik u64 bytes, u64 empty_size, u64 min_bytes), 10123f7de037SJosef Bacik 10133f7de037SJosef Bacik TP_ARGS(block_group, start, bytes, empty_size, min_bytes), 10143f7de037SJosef Bacik 1015*bc074524SJeff Mahoney TP_STRUCT__entry_btrfs( 10163f7de037SJosef Bacik __field( u64, bg_objectid ) 10173f7de037SJosef Bacik __field( u64, flags ) 10183f7de037SJosef Bacik __field( u64, start ) 10193f7de037SJosef Bacik __field( u64, bytes ) 10203f7de037SJosef Bacik __field( u64, empty_size ) 10213f7de037SJosef Bacik __field( u64, min_bytes ) 10223f7de037SJosef Bacik ), 10233f7de037SJosef Bacik 1024*bc074524SJeff Mahoney TP_fast_assign_btrfs(block_group->fs_info, 10253f7de037SJosef Bacik __entry->bg_objectid = block_group->key.objectid; 10263f7de037SJosef Bacik __entry->flags = block_group->flags; 10273f7de037SJosef Bacik __entry->start = start; 10283f7de037SJosef Bacik __entry->bytes = bytes; 10293f7de037SJosef Bacik __entry->empty_size = empty_size; 10303f7de037SJosef Bacik __entry->min_bytes = min_bytes; 10313f7de037SJosef Bacik ), 10323f7de037SJosef Bacik 1033*bc074524SJeff Mahoney TP_printk_btrfs("block_group = %Lu, flags = %Lu(%s), start = %Lu, len = %Lu," 10343f7de037SJosef Bacik " empty_size = %Lu, min_bytes = %Lu", __entry->bg_objectid, 10353f7de037SJosef Bacik __entry->flags, 10363f7de037SJosef Bacik __print_flags((unsigned long)__entry->flags, "|", 10373f7de037SJosef Bacik BTRFS_GROUP_FLAGS), __entry->start, 10383f7de037SJosef Bacik __entry->bytes, __entry->empty_size, __entry->min_bytes) 10393f7de037SJosef Bacik ); 10403f7de037SJosef Bacik 10413f7de037SJosef Bacik TRACE_EVENT(btrfs_failed_cluster_setup, 10423f7de037SJosef Bacik 10433f7de037SJosef Bacik TP_PROTO(struct btrfs_block_group_cache *block_group), 10443f7de037SJosef Bacik 10453f7de037SJosef Bacik TP_ARGS(block_group), 10463f7de037SJosef Bacik 1047*bc074524SJeff Mahoney TP_STRUCT__entry_btrfs( 10483f7de037SJosef Bacik __field( u64, bg_objectid ) 10493f7de037SJosef Bacik ), 10503f7de037SJosef Bacik 1051*bc074524SJeff Mahoney TP_fast_assign_btrfs(block_group->fs_info, 10523f7de037SJosef Bacik __entry->bg_objectid = block_group->key.objectid; 10533f7de037SJosef Bacik ), 10543f7de037SJosef Bacik 1055*bc074524SJeff Mahoney TP_printk_btrfs("block_group = %Lu", __entry->bg_objectid) 10563f7de037SJosef Bacik ); 10573f7de037SJosef Bacik 10583f7de037SJosef Bacik TRACE_EVENT(btrfs_setup_cluster, 10593f7de037SJosef Bacik 10603f7de037SJosef Bacik TP_PROTO(struct btrfs_block_group_cache *block_group, 10613f7de037SJosef Bacik struct btrfs_free_cluster *cluster, u64 size, int bitmap), 10623f7de037SJosef Bacik 10633f7de037SJosef Bacik TP_ARGS(block_group, cluster, size, bitmap), 10643f7de037SJosef Bacik 1065*bc074524SJeff Mahoney TP_STRUCT__entry_btrfs( 10663f7de037SJosef Bacik __field( u64, bg_objectid ) 10673f7de037SJosef Bacik __field( u64, flags ) 10683f7de037SJosef Bacik __field( u64, start ) 10693f7de037SJosef Bacik __field( u64, max_size ) 10703f7de037SJosef Bacik __field( u64, size ) 10713f7de037SJosef Bacik __field( int, bitmap ) 10723f7de037SJosef Bacik ), 10733f7de037SJosef Bacik 1074*bc074524SJeff Mahoney TP_fast_assign_btrfs(block_group->fs_info, 10753f7de037SJosef Bacik __entry->bg_objectid = block_group->key.objectid; 10763f7de037SJosef Bacik __entry->flags = block_group->flags; 10773f7de037SJosef Bacik __entry->start = cluster->window_start; 10783f7de037SJosef Bacik __entry->max_size = cluster->max_size; 10793f7de037SJosef Bacik __entry->size = size; 10803f7de037SJosef Bacik __entry->bitmap = bitmap; 10813f7de037SJosef Bacik ), 10823f7de037SJosef Bacik 1083*bc074524SJeff Mahoney TP_printk_btrfs("block_group = %Lu, flags = %Lu(%s), window_start = %Lu, " 10843f7de037SJosef Bacik "size = %Lu, max_size = %Lu, bitmap = %d", 10853f7de037SJosef Bacik __entry->bg_objectid, 10863f7de037SJosef Bacik __entry->flags, 10873f7de037SJosef Bacik __print_flags((unsigned long)__entry->flags, "|", 10883f7de037SJosef Bacik BTRFS_GROUP_FLAGS), __entry->start, 10893f7de037SJosef Bacik __entry->size, __entry->max_size, __entry->bitmap) 10903f7de037SJosef Bacik ); 10913f7de037SJosef Bacik 1092143bede5SJeff Mahoney struct extent_state; 1093143bede5SJeff Mahoney TRACE_EVENT(alloc_extent_state, 1094143bede5SJeff Mahoney 1095143bede5SJeff Mahoney TP_PROTO(struct extent_state *state, gfp_t mask, unsigned long IP), 1096143bede5SJeff Mahoney 1097143bede5SJeff Mahoney TP_ARGS(state, mask, IP), 1098143bede5SJeff Mahoney 1099143bede5SJeff Mahoney TP_STRUCT__entry( 1100143bede5SJeff Mahoney __field(struct extent_state *, state) 1101143bede5SJeff Mahoney __field(gfp_t, mask) 1102143bede5SJeff Mahoney __field(unsigned long, ip) 1103143bede5SJeff Mahoney ), 1104143bede5SJeff Mahoney 1105143bede5SJeff Mahoney TP_fast_assign( 1106143bede5SJeff Mahoney __entry->state = state, 1107143bede5SJeff Mahoney __entry->mask = mask, 1108143bede5SJeff Mahoney __entry->ip = IP 1109143bede5SJeff Mahoney ), 1110143bede5SJeff Mahoney 1111bbedb179SScott Wood TP_printk("state=%p; mask = %s; caller = %pS", __entry->state, 1112143bede5SJeff Mahoney show_gfp_flags(__entry->mask), (void *)__entry->ip) 1113143bede5SJeff Mahoney ); 1114143bede5SJeff Mahoney 1115143bede5SJeff Mahoney TRACE_EVENT(free_extent_state, 1116143bede5SJeff Mahoney 1117143bede5SJeff Mahoney TP_PROTO(struct extent_state *state, unsigned long IP), 1118143bede5SJeff Mahoney 1119143bede5SJeff Mahoney TP_ARGS(state, IP), 1120143bede5SJeff Mahoney 1121143bede5SJeff Mahoney TP_STRUCT__entry( 1122143bede5SJeff Mahoney __field(struct extent_state *, state) 1123143bede5SJeff Mahoney __field(unsigned long, ip) 1124143bede5SJeff Mahoney ), 1125143bede5SJeff Mahoney 1126143bede5SJeff Mahoney TP_fast_assign( 1127143bede5SJeff Mahoney __entry->state = state, 1128143bede5SJeff Mahoney __entry->ip = IP 1129143bede5SJeff Mahoney ), 1130143bede5SJeff Mahoney 1131bbedb179SScott Wood TP_printk(" state=%p; caller = %pS", __entry->state, 1132143bede5SJeff Mahoney (void *)__entry->ip) 1133143bede5SJeff Mahoney ); 1134143bede5SJeff Mahoney 113552483bc2SQu Wenruo DECLARE_EVENT_CLASS(btrfs__work, 113652483bc2SQu Wenruo 113752483bc2SQu Wenruo TP_PROTO(struct btrfs_work *work), 113852483bc2SQu Wenruo 113952483bc2SQu Wenruo TP_ARGS(work), 114052483bc2SQu Wenruo 1141*bc074524SJeff Mahoney TP_STRUCT__entry_btrfs( 114252483bc2SQu Wenruo __field( void *, work ) 114352483bc2SQu Wenruo __field( void *, wq ) 114452483bc2SQu Wenruo __field( void *, func ) 114552483bc2SQu Wenruo __field( void *, ordered_func ) 114652483bc2SQu Wenruo __field( void *, ordered_free ) 1147b38a6258SLiu Bo __field( void *, normal_work ) 114852483bc2SQu Wenruo ), 114952483bc2SQu Wenruo 1150*bc074524SJeff Mahoney TP_fast_assign_btrfs(btrfs_work_owner(work), 115152483bc2SQu Wenruo __entry->work = work; 115252483bc2SQu Wenruo __entry->wq = work->wq; 115352483bc2SQu Wenruo __entry->func = work->func; 115452483bc2SQu Wenruo __entry->ordered_func = work->ordered_func; 115552483bc2SQu Wenruo __entry->ordered_free = work->ordered_free; 1156b38a6258SLiu Bo __entry->normal_work = &work->normal_work; 115752483bc2SQu Wenruo ), 115852483bc2SQu Wenruo 1159*bc074524SJeff Mahoney TP_printk_btrfs("work=%p (normal_work=%p), wq=%p, func=%pf, ordered_func=%p," 1160b38a6258SLiu Bo " ordered_free=%p", 1161b38a6258SLiu Bo __entry->work, __entry->normal_work, __entry->wq, 1162b38a6258SLiu Bo __entry->func, __entry->ordered_func, __entry->ordered_free) 116352483bc2SQu Wenruo ); 116452483bc2SQu Wenruo 116552483bc2SQu Wenruo /* For situiations that the work is freed */ 116652483bc2SQu Wenruo DECLARE_EVENT_CLASS(btrfs__work__done, 116752483bc2SQu Wenruo 116852483bc2SQu Wenruo TP_PROTO(struct btrfs_work *work), 116952483bc2SQu Wenruo 117052483bc2SQu Wenruo TP_ARGS(work), 117152483bc2SQu Wenruo 1172*bc074524SJeff Mahoney TP_STRUCT__entry_btrfs( 117352483bc2SQu Wenruo __field( void *, work ) 117452483bc2SQu Wenruo ), 117552483bc2SQu Wenruo 1176*bc074524SJeff Mahoney TP_fast_assign_btrfs(btrfs_work_owner(work), 117752483bc2SQu Wenruo __entry->work = work; 117852483bc2SQu Wenruo ), 117952483bc2SQu Wenruo 1180*bc074524SJeff Mahoney TP_printk_btrfs("work->%p", __entry->work) 118152483bc2SQu Wenruo ); 118252483bc2SQu Wenruo 118352483bc2SQu Wenruo DEFINE_EVENT(btrfs__work, btrfs_work_queued, 118452483bc2SQu Wenruo 118552483bc2SQu Wenruo TP_PROTO(struct btrfs_work *work), 118652483bc2SQu Wenruo 118752483bc2SQu Wenruo TP_ARGS(work) 118852483bc2SQu Wenruo ); 118952483bc2SQu Wenruo 119052483bc2SQu Wenruo DEFINE_EVENT(btrfs__work, btrfs_work_sched, 119152483bc2SQu Wenruo 119252483bc2SQu Wenruo TP_PROTO(struct btrfs_work *work), 119352483bc2SQu Wenruo 119452483bc2SQu Wenruo TP_ARGS(work) 119552483bc2SQu Wenruo ); 119652483bc2SQu Wenruo 119752483bc2SQu Wenruo DEFINE_EVENT(btrfs__work__done, btrfs_all_work_done, 119852483bc2SQu Wenruo 119952483bc2SQu Wenruo TP_PROTO(struct btrfs_work *work), 120052483bc2SQu Wenruo 120152483bc2SQu Wenruo TP_ARGS(work) 120252483bc2SQu Wenruo ); 120352483bc2SQu Wenruo 120452483bc2SQu Wenruo DEFINE_EVENT(btrfs__work, btrfs_ordered_sched, 120552483bc2SQu Wenruo 120652483bc2SQu Wenruo TP_PROTO(struct btrfs_work *work), 120752483bc2SQu Wenruo 120852483bc2SQu Wenruo TP_ARGS(work) 120952483bc2SQu Wenruo ); 121052483bc2SQu Wenruo 1211c3a46891SQu Wenruo DECLARE_EVENT_CLASS(btrfs__workqueue, 1212c3a46891SQu Wenruo 1213c3a46891SQu Wenruo TP_PROTO(struct __btrfs_workqueue *wq, const char *name, int high), 1214c3a46891SQu Wenruo 1215c3a46891SQu Wenruo TP_ARGS(wq, name, high), 1216c3a46891SQu Wenruo 1217*bc074524SJeff Mahoney TP_STRUCT__entry_btrfs( 1218c3a46891SQu Wenruo __field( void *, wq ) 1219c3a46891SQu Wenruo __string( name, name ) 1220c3a46891SQu Wenruo __field( int , high ) 1221c3a46891SQu Wenruo ), 1222c3a46891SQu Wenruo 1223*bc074524SJeff Mahoney TP_fast_assign_btrfs(btrfs_workqueue_owner(wq), 1224c3a46891SQu Wenruo __entry->wq = wq; 1225c3a46891SQu Wenruo __assign_str(name, name); 1226c3a46891SQu Wenruo __entry->high = high; 1227c3a46891SQu Wenruo ), 1228c3a46891SQu Wenruo 1229*bc074524SJeff Mahoney TP_printk_btrfs("name=%s%s, wq=%p", __get_str(name), 1230c3a46891SQu Wenruo __print_flags(__entry->high, "", 1231c3a46891SQu Wenruo {(WQ_HIGHPRI), "-high"}), 1232c3a46891SQu Wenruo __entry->wq) 1233c3a46891SQu Wenruo ); 1234c3a46891SQu Wenruo 1235c3a46891SQu Wenruo DEFINE_EVENT(btrfs__workqueue, btrfs_workqueue_alloc, 1236c3a46891SQu Wenruo 1237c3a46891SQu Wenruo TP_PROTO(struct __btrfs_workqueue *wq, const char *name, int high), 1238c3a46891SQu Wenruo 1239c3a46891SQu Wenruo TP_ARGS(wq, name, high) 1240c3a46891SQu Wenruo ); 1241c3a46891SQu Wenruo 1242c3a46891SQu Wenruo DECLARE_EVENT_CLASS(btrfs__workqueue_done, 1243c3a46891SQu Wenruo 1244c3a46891SQu Wenruo TP_PROTO(struct __btrfs_workqueue *wq), 1245c3a46891SQu Wenruo 1246c3a46891SQu Wenruo TP_ARGS(wq), 1247c3a46891SQu Wenruo 1248*bc074524SJeff Mahoney TP_STRUCT__entry_btrfs( 1249c3a46891SQu Wenruo __field( void *, wq ) 1250c3a46891SQu Wenruo ), 1251c3a46891SQu Wenruo 1252*bc074524SJeff Mahoney TP_fast_assign_btrfs(btrfs_workqueue_owner(wq), 1253c3a46891SQu Wenruo __entry->wq = wq; 1254c3a46891SQu Wenruo ), 1255c3a46891SQu Wenruo 1256*bc074524SJeff Mahoney TP_printk_btrfs("wq=%p", __entry->wq) 1257c3a46891SQu Wenruo ); 1258c3a46891SQu Wenruo 1259c3a46891SQu Wenruo DEFINE_EVENT(btrfs__workqueue_done, btrfs_workqueue_destroy, 1260c3a46891SQu Wenruo 1261c3a46891SQu Wenruo TP_PROTO(struct __btrfs_workqueue *wq), 1262c3a46891SQu Wenruo 1263c3a46891SQu Wenruo TP_ARGS(wq) 1264c3a46891SQu Wenruo ); 126552483bc2SQu Wenruo 126681fb6f77SQu Wenruo DECLARE_EVENT_CLASS(btrfs__qgroup_data_map, 126781fb6f77SQu Wenruo 126881fb6f77SQu Wenruo TP_PROTO(struct inode *inode, u64 free_reserved), 126981fb6f77SQu Wenruo 127081fb6f77SQu Wenruo TP_ARGS(inode, free_reserved), 127181fb6f77SQu Wenruo 1272*bc074524SJeff Mahoney TP_STRUCT__entry_btrfs( 127381fb6f77SQu Wenruo __field( u64, rootid ) 127481fb6f77SQu Wenruo __field( unsigned long, ino ) 127581fb6f77SQu Wenruo __field( u64, free_reserved ) 127681fb6f77SQu Wenruo ), 127781fb6f77SQu Wenruo 1278*bc074524SJeff Mahoney TP_fast_assign_btrfs(btrfs_sb(inode->i_sb), 127981fb6f77SQu Wenruo __entry->rootid = BTRFS_I(inode)->root->objectid; 128081fb6f77SQu Wenruo __entry->ino = inode->i_ino; 128181fb6f77SQu Wenruo __entry->free_reserved = free_reserved; 128281fb6f77SQu Wenruo ), 128381fb6f77SQu Wenruo 1284*bc074524SJeff Mahoney TP_printk_btrfs("rootid=%llu, ino=%lu, free_reserved=%llu", 128581fb6f77SQu Wenruo __entry->rootid, __entry->ino, __entry->free_reserved) 128681fb6f77SQu Wenruo ); 128781fb6f77SQu Wenruo 128881fb6f77SQu Wenruo DEFINE_EVENT(btrfs__qgroup_data_map, btrfs_qgroup_init_data_rsv_map, 128981fb6f77SQu Wenruo 129081fb6f77SQu Wenruo TP_PROTO(struct inode *inode, u64 free_reserved), 129181fb6f77SQu Wenruo 129281fb6f77SQu Wenruo TP_ARGS(inode, free_reserved) 129381fb6f77SQu Wenruo ); 129481fb6f77SQu Wenruo 129581fb6f77SQu Wenruo DEFINE_EVENT(btrfs__qgroup_data_map, btrfs_qgroup_free_data_rsv_map, 129681fb6f77SQu Wenruo 129781fb6f77SQu Wenruo TP_PROTO(struct inode *inode, u64 free_reserved), 129881fb6f77SQu Wenruo 129981fb6f77SQu Wenruo TP_ARGS(inode, free_reserved) 130081fb6f77SQu Wenruo ); 130181fb6f77SQu Wenruo 130281fb6f77SQu Wenruo #define BTRFS_QGROUP_OPERATIONS \ 130381fb6f77SQu Wenruo { QGROUP_RESERVE, "reserve" }, \ 130481fb6f77SQu Wenruo { QGROUP_RELEASE, "release" }, \ 130581fb6f77SQu Wenruo { QGROUP_FREE, "free" } 130681fb6f77SQu Wenruo 130781fb6f77SQu Wenruo DECLARE_EVENT_CLASS(btrfs__qgroup_rsv_data, 130881fb6f77SQu Wenruo 130981fb6f77SQu Wenruo TP_PROTO(struct inode *inode, u64 start, u64 len, u64 reserved, int op), 131081fb6f77SQu Wenruo 131181fb6f77SQu Wenruo TP_ARGS(inode, start, len, reserved, op), 131281fb6f77SQu Wenruo 1313*bc074524SJeff Mahoney TP_STRUCT__entry_btrfs( 131481fb6f77SQu Wenruo __field( u64, rootid ) 131581fb6f77SQu Wenruo __field( unsigned long, ino ) 131681fb6f77SQu Wenruo __field( u64, start ) 131781fb6f77SQu Wenruo __field( u64, len ) 131881fb6f77SQu Wenruo __field( u64, reserved ) 131981fb6f77SQu Wenruo __field( int, op ) 132081fb6f77SQu Wenruo ), 132181fb6f77SQu Wenruo 1322*bc074524SJeff Mahoney TP_fast_assign_btrfs(btrfs_sb(inode->i_sb), 132381fb6f77SQu Wenruo __entry->rootid = BTRFS_I(inode)->root->objectid; 132481fb6f77SQu Wenruo __entry->ino = inode->i_ino; 132581fb6f77SQu Wenruo __entry->start = start; 132681fb6f77SQu Wenruo __entry->len = len; 132781fb6f77SQu Wenruo __entry->reserved = reserved; 132881fb6f77SQu Wenruo __entry->op = op; 132981fb6f77SQu Wenruo ), 133081fb6f77SQu Wenruo 1331*bc074524SJeff Mahoney TP_printk_btrfs("root=%llu, ino=%lu, start=%llu, len=%llu, reserved=%llu, op=%s", 133281fb6f77SQu Wenruo __entry->rootid, __entry->ino, __entry->start, __entry->len, 133381fb6f77SQu Wenruo __entry->reserved, 133481fb6f77SQu Wenruo __print_flags((unsigned long)__entry->op, "", 133581fb6f77SQu Wenruo BTRFS_QGROUP_OPERATIONS) 133681fb6f77SQu Wenruo ) 133781fb6f77SQu Wenruo ); 133881fb6f77SQu Wenruo 133981fb6f77SQu Wenruo DEFINE_EVENT(btrfs__qgroup_rsv_data, btrfs_qgroup_reserve_data, 134081fb6f77SQu Wenruo 134181fb6f77SQu Wenruo TP_PROTO(struct inode *inode, u64 start, u64 len, u64 reserved, int op), 134281fb6f77SQu Wenruo 134381fb6f77SQu Wenruo TP_ARGS(inode, start, len, reserved, op) 134481fb6f77SQu Wenruo ); 134581fb6f77SQu Wenruo 134681fb6f77SQu Wenruo DEFINE_EVENT(btrfs__qgroup_rsv_data, btrfs_qgroup_release_data, 134781fb6f77SQu Wenruo 134881fb6f77SQu Wenruo TP_PROTO(struct inode *inode, u64 start, u64 len, u64 reserved, int op), 134981fb6f77SQu Wenruo 135081fb6f77SQu Wenruo TP_ARGS(inode, start, len, reserved, op) 135181fb6f77SQu Wenruo ); 135281fb6f77SQu Wenruo 135381fb6f77SQu Wenruo DECLARE_EVENT_CLASS(btrfs__qgroup_delayed_ref, 135481fb6f77SQu Wenruo 1355*bc074524SJeff Mahoney TP_PROTO(struct btrfs_fs_info *fs_info, u64 ref_root, u64 reserved), 135681fb6f77SQu Wenruo 1357*bc074524SJeff Mahoney TP_ARGS(fs_info, ref_root, reserved), 135881fb6f77SQu Wenruo 1359*bc074524SJeff Mahoney TP_STRUCT__entry_btrfs( 136081fb6f77SQu Wenruo __field( u64, ref_root ) 136181fb6f77SQu Wenruo __field( u64, reserved ) 136281fb6f77SQu Wenruo ), 136381fb6f77SQu Wenruo 1364*bc074524SJeff Mahoney TP_fast_assign_btrfs(fs_info, 136581fb6f77SQu Wenruo __entry->ref_root = ref_root; 136681fb6f77SQu Wenruo __entry->reserved = reserved; 136781fb6f77SQu Wenruo ), 136881fb6f77SQu Wenruo 1369*bc074524SJeff Mahoney TP_printk_btrfs("root=%llu, reserved=%llu, op=free", 137081fb6f77SQu Wenruo __entry->ref_root, __entry->reserved) 137181fb6f77SQu Wenruo ); 137281fb6f77SQu Wenruo 137381fb6f77SQu Wenruo DEFINE_EVENT(btrfs__qgroup_delayed_ref, btrfs_qgroup_free_delayed_ref, 137481fb6f77SQu Wenruo 1375*bc074524SJeff Mahoney TP_PROTO(struct btrfs_fs_info *fs_info, u64 ref_root, u64 reserved), 137681fb6f77SQu Wenruo 1377*bc074524SJeff Mahoney TP_ARGS(fs_info, ref_root, reserved) 137881fb6f77SQu Wenruo ); 13790f5dcf8dSMark Fasheh 13800f5dcf8dSMark Fasheh DECLARE_EVENT_CLASS(btrfs_qgroup_extent, 1381*bc074524SJeff Mahoney TP_PROTO(struct btrfs_fs_info *fs_info, 1382*bc074524SJeff Mahoney struct btrfs_qgroup_extent_record *rec), 13830f5dcf8dSMark Fasheh 1384*bc074524SJeff Mahoney TP_ARGS(fs_info, rec), 13850f5dcf8dSMark Fasheh 1386*bc074524SJeff Mahoney TP_STRUCT__entry_btrfs( 13870f5dcf8dSMark Fasheh __field( u64, bytenr ) 13880f5dcf8dSMark Fasheh __field( u64, num_bytes ) 13890f5dcf8dSMark Fasheh ), 13900f5dcf8dSMark Fasheh 1391*bc074524SJeff Mahoney TP_fast_assign_btrfs(fs_info, 13920f5dcf8dSMark Fasheh __entry->bytenr = rec->bytenr, 13930f5dcf8dSMark Fasheh __entry->num_bytes = rec->num_bytes; 13940f5dcf8dSMark Fasheh ), 13950f5dcf8dSMark Fasheh 1396*bc074524SJeff Mahoney TP_printk_btrfs("bytenr = %llu, num_bytes = %llu", 13970f5dcf8dSMark Fasheh (unsigned long long)__entry->bytenr, 13980f5dcf8dSMark Fasheh (unsigned long long)__entry->num_bytes) 13990f5dcf8dSMark Fasheh ); 14000f5dcf8dSMark Fasheh 14010f5dcf8dSMark Fasheh DEFINE_EVENT(btrfs_qgroup_extent, btrfs_qgroup_account_extents, 14020f5dcf8dSMark Fasheh 1403*bc074524SJeff Mahoney TP_PROTO(struct btrfs_fs_info *fs_info, 1404*bc074524SJeff Mahoney struct btrfs_qgroup_extent_record *rec), 14050f5dcf8dSMark Fasheh 1406*bc074524SJeff Mahoney TP_ARGS(fs_info, rec) 14070f5dcf8dSMark Fasheh ); 14080f5dcf8dSMark Fasheh 14090f5dcf8dSMark Fasheh DEFINE_EVENT(btrfs_qgroup_extent, btrfs_qgroup_insert_dirty_extent, 14100f5dcf8dSMark Fasheh 1411*bc074524SJeff Mahoney TP_PROTO(struct btrfs_fs_info *fs_info, 1412*bc074524SJeff Mahoney struct btrfs_qgroup_extent_record *rec), 14130f5dcf8dSMark Fasheh 1414*bc074524SJeff Mahoney TP_ARGS(fs_info, rec) 14150f5dcf8dSMark Fasheh ); 14160f5dcf8dSMark Fasheh 14170f5dcf8dSMark Fasheh TRACE_EVENT(btrfs_qgroup_account_extent, 14180f5dcf8dSMark Fasheh 1419*bc074524SJeff Mahoney TP_PROTO(struct btrfs_fs_info *fs_info, u64 bytenr, 1420*bc074524SJeff Mahoney u64 num_bytes, u64 nr_old_roots, u64 nr_new_roots), 14210f5dcf8dSMark Fasheh 1422*bc074524SJeff Mahoney TP_ARGS(fs_info, bytenr, num_bytes, nr_old_roots, nr_new_roots), 14230f5dcf8dSMark Fasheh 1424*bc074524SJeff Mahoney TP_STRUCT__entry_btrfs( 14250f5dcf8dSMark Fasheh __field( u64, bytenr ) 14260f5dcf8dSMark Fasheh __field( u64, num_bytes ) 14270f5dcf8dSMark Fasheh __field( u64, nr_old_roots ) 14280f5dcf8dSMark Fasheh __field( u64, nr_new_roots ) 14290f5dcf8dSMark Fasheh ), 14300f5dcf8dSMark Fasheh 1431*bc074524SJeff Mahoney TP_fast_assign_btrfs(fs_info, 14320f5dcf8dSMark Fasheh __entry->bytenr = bytenr; 14330f5dcf8dSMark Fasheh __entry->num_bytes = num_bytes; 14340f5dcf8dSMark Fasheh __entry->nr_old_roots = nr_old_roots; 14350f5dcf8dSMark Fasheh __entry->nr_new_roots = nr_new_roots; 14360f5dcf8dSMark Fasheh ), 14370f5dcf8dSMark Fasheh 1438*bc074524SJeff Mahoney TP_printk_btrfs("bytenr = %llu, num_bytes = %llu, nr_old_roots = %llu, " 14390f5dcf8dSMark Fasheh "nr_new_roots = %llu", 14400f5dcf8dSMark Fasheh __entry->bytenr, 14410f5dcf8dSMark Fasheh __entry->num_bytes, 14420f5dcf8dSMark Fasheh __entry->nr_old_roots, 14430f5dcf8dSMark Fasheh __entry->nr_new_roots) 14440f5dcf8dSMark Fasheh ); 14450f5dcf8dSMark Fasheh 14460f5dcf8dSMark Fasheh TRACE_EVENT(qgroup_update_counters, 14470f5dcf8dSMark Fasheh 1448*bc074524SJeff Mahoney TP_PROTO(struct btrfs_fs_info *fs_info, u64 qgid, 1449*bc074524SJeff Mahoney u64 cur_old_count, u64 cur_new_count), 14500f5dcf8dSMark Fasheh 1451*bc074524SJeff Mahoney TP_ARGS(fs_info, qgid, cur_old_count, cur_new_count), 14520f5dcf8dSMark Fasheh 1453*bc074524SJeff Mahoney TP_STRUCT__entry_btrfs( 14540f5dcf8dSMark Fasheh __field( u64, qgid ) 14550f5dcf8dSMark Fasheh __field( u64, cur_old_count ) 14560f5dcf8dSMark Fasheh __field( u64, cur_new_count ) 14570f5dcf8dSMark Fasheh ), 14580f5dcf8dSMark Fasheh 1459*bc074524SJeff Mahoney TP_fast_assign_btrfs(fs_info, 14600f5dcf8dSMark Fasheh __entry->qgid = qgid; 14610f5dcf8dSMark Fasheh __entry->cur_old_count = cur_old_count; 14620f5dcf8dSMark Fasheh __entry->cur_new_count = cur_new_count; 14630f5dcf8dSMark Fasheh ), 14640f5dcf8dSMark Fasheh 1465*bc074524SJeff Mahoney TP_printk_btrfs("qgid = %llu, cur_old_count = %llu, cur_new_count = %llu", 14660f5dcf8dSMark Fasheh __entry->qgid, 14670f5dcf8dSMark Fasheh __entry->cur_old_count, 14680f5dcf8dSMark Fasheh __entry->cur_new_count) 14690f5dcf8dSMark Fasheh ); 14700f5dcf8dSMark Fasheh 14711abe9b8aSliubo #endif /* _TRACE_BTRFS_H */ 14721abe9b8aSliubo 14731abe9b8aSliubo /* This part must be outside protection */ 14741abe9b8aSliubo #include <trace/define_trace.h> 1475