19bffad1eSTheodore Ts'o #undef TRACE_SYSTEM 29bffad1eSTheodore Ts'o #define TRACE_SYSTEM ext4 39bffad1eSTheodore Ts'o 4d0b6e04aSLi Zefan #if !defined(_TRACE_EXT4_H) || defined(TRACE_HEADER_MULTI_READ) 5d0b6e04aSLi Zefan #define _TRACE_EXT4_H 6d0b6e04aSLi Zefan 79bffad1eSTheodore Ts'o #include <linux/writeback.h> 89bffad1eSTheodore Ts'o #include <linux/tracepoint.h> 99bffad1eSTheodore Ts'o 103661d286STheodore Ts'o struct ext4_allocation_context; 113661d286STheodore Ts'o struct ext4_allocation_request; 126f91bc5fSEric Gouriou struct ext4_extent; 133661d286STheodore Ts'o struct ext4_prealloc_space; 14fb40ba0dSTheodore Ts'o struct ext4_inode_info; 150ef12249SJosh Stone struct mpage_da_data; 16d8990240SAditya Kali struct ext4_map_blocks; 17d8990240SAditya Kali struct ext4_extent; 18992e9fddSZheng Liu struct extent_status; 19fb40ba0dSTheodore Ts'o 20fb40ba0dSTheodore Ts'o #define EXT4_I(inode) (container_of(inode, struct ext4_inode_info, vfs_inode)) 213661d286STheodore Ts'o 2221ddd568STheodore Ts'o #define show_mballoc_flags(flags) __print_flags(flags, "|", \ 2321ddd568STheodore Ts'o { EXT4_MB_HINT_MERGE, "HINT_MERGE" }, \ 2421ddd568STheodore Ts'o { EXT4_MB_HINT_RESERVED, "HINT_RESV" }, \ 2521ddd568STheodore Ts'o { EXT4_MB_HINT_METADATA, "HINT_MDATA" }, \ 2621ddd568STheodore Ts'o { EXT4_MB_HINT_FIRST, "HINT_FIRST" }, \ 2721ddd568STheodore Ts'o { EXT4_MB_HINT_BEST, "HINT_BEST" }, \ 2821ddd568STheodore Ts'o { EXT4_MB_HINT_DATA, "HINT_DATA" }, \ 2921ddd568STheodore Ts'o { EXT4_MB_HINT_NOPREALLOC, "HINT_NOPREALLOC" }, \ 3021ddd568STheodore Ts'o { EXT4_MB_HINT_GROUP_ALLOC, "HINT_GRP_ALLOC" }, \ 3121ddd568STheodore Ts'o { EXT4_MB_HINT_GOAL_ONLY, "HINT_GOAL_ONLY" }, \ 3221ddd568STheodore Ts'o { EXT4_MB_HINT_TRY_GOAL, "HINT_TRY_GOAL" }, \ 3321ddd568STheodore Ts'o { EXT4_MB_DELALLOC_RESERVED, "DELALLOC_RESV" }, \ 3421ddd568STheodore Ts'o { EXT4_MB_STREAM_ALLOC, "STREAM_ALLOC" }, \ 3521ddd568STheodore Ts'o { EXT4_MB_USE_ROOT_BLOCKS, "USE_ROOT_BLKS" }, \ 3621ddd568STheodore Ts'o { EXT4_MB_USE_RESERVED, "USE_RESV" }) 3721ddd568STheodore Ts'o 3821ddd568STheodore Ts'o #define show_map_flags(flags) __print_flags(flags, "|", \ 3921ddd568STheodore Ts'o { EXT4_GET_BLOCKS_CREATE, "CREATE" }, \ 4021ddd568STheodore Ts'o { EXT4_GET_BLOCKS_UNINIT_EXT, "UNINIT" }, \ 4121ddd568STheodore Ts'o { EXT4_GET_BLOCKS_DELALLOC_RESERVE, "DELALLOC" }, \ 4221ddd568STheodore Ts'o { EXT4_GET_BLOCKS_PRE_IO, "PRE_IO" }, \ 4321ddd568STheodore Ts'o { EXT4_GET_BLOCKS_CONVERT, "CONVERT" }, \ 4421ddd568STheodore Ts'o { EXT4_GET_BLOCKS_METADATA_NOFAIL, "METADATA_NOFAIL" }, \ 4521ddd568STheodore Ts'o { EXT4_GET_BLOCKS_NO_NORMALIZE, "NO_NORMALIZE" }, \ 4621ddd568STheodore Ts'o { EXT4_GET_BLOCKS_KEEP_SIZE, "KEEP_SIZE" }, \ 4721ddd568STheodore Ts'o { EXT4_GET_BLOCKS_NO_LOCK, "NO_LOCK" }, \ 4821ddd568STheodore Ts'o { EXT4_GET_BLOCKS_NO_PUT_HOLE, "NO_PUT_HOLE" }) 4921ddd568STheodore Ts'o 5021ddd568STheodore Ts'o #define show_mflags(flags) __print_flags(flags, "", \ 5121ddd568STheodore Ts'o { EXT4_MAP_NEW, "N" }, \ 5221ddd568STheodore Ts'o { EXT4_MAP_MAPPED, "M" }, \ 5321ddd568STheodore Ts'o { EXT4_MAP_UNWRITTEN, "U" }, \ 5421ddd568STheodore Ts'o { EXT4_MAP_BOUNDARY, "B" }, \ 5521ddd568STheodore Ts'o { EXT4_MAP_UNINIT, "u" }, \ 5621ddd568STheodore Ts'o { EXT4_MAP_FROM_CLUSTER, "C" }) 5721ddd568STheodore Ts'o 5821ddd568STheodore Ts'o #define show_free_flags(flags) __print_flags(flags, "|", \ 5921ddd568STheodore Ts'o { EXT4_FREE_BLOCKS_METADATA, "METADATA" }, \ 6021ddd568STheodore Ts'o { EXT4_FREE_BLOCKS_FORGET, "FORGET" }, \ 6121ddd568STheodore Ts'o { EXT4_FREE_BLOCKS_VALIDATED, "VALIDATED" }, \ 6221ddd568STheodore Ts'o { EXT4_FREE_BLOCKS_NO_QUOT_UPDATE, "NO_QUOTA" }, \ 6321ddd568STheodore Ts'o { EXT4_FREE_BLOCKS_NOFREE_FIRST_CLUSTER,"1ST_CLUSTER" },\ 6421ddd568STheodore Ts'o { EXT4_FREE_BLOCKS_NOFREE_LAST_CLUSTER, "LAST_CLUSTER" }) 6521ddd568STheodore Ts'o 6621ddd568STheodore Ts'o #define show_extent_status(status) __print_flags(status, "", \ 6721ddd568STheodore Ts'o { (1 << 3), "W" }, \ 6821ddd568STheodore Ts'o { (1 << 2), "U" }, \ 6921ddd568STheodore Ts'o { (1 << 1), "D" }, \ 7021ddd568STheodore Ts'o { (1 << 0), "H" }) 7121ddd568STheodore Ts'o 7221ddd568STheodore Ts'o 739bffad1eSTheodore Ts'o TRACE_EVENT(ext4_free_inode, 749bffad1eSTheodore Ts'o TP_PROTO(struct inode *inode), 759bffad1eSTheodore Ts'o 769bffad1eSTheodore Ts'o TP_ARGS(inode), 779bffad1eSTheodore Ts'o 789bffad1eSTheodore Ts'o TP_STRUCT__entry( 790562e0baSJiaying Zhang __field( dev_t, dev ) 809bffad1eSTheodore Ts'o __field( ino_t, ino ) 819bffad1eSTheodore Ts'o __field( uid_t, uid ) 829bffad1eSTheodore Ts'o __field( gid_t, gid ) 83a9c667f8SLukas Czerner __field( __u64, blocks ) 84210c0526SAnatol Pomozov __field( __u16, mode ) 859bffad1eSTheodore Ts'o ), 869bffad1eSTheodore Ts'o 879bffad1eSTheodore Ts'o TP_fast_assign( 880562e0baSJiaying Zhang __entry->dev = inode->i_sb->s_dev; 899bffad1eSTheodore Ts'o __entry->ino = inode->i_ino; 9008cefc7aSEric W. Biederman __entry->uid = i_uid_read(inode); 9108cefc7aSEric W. Biederman __entry->gid = i_gid_read(inode); 929bffad1eSTheodore Ts'o __entry->blocks = inode->i_blocks; 93210c0526SAnatol Pomozov __entry->mode = inode->i_mode; 949bffad1eSTheodore Ts'o ), 959bffad1eSTheodore Ts'o 96a269029dSTheodore Ts'o TP_printk("dev %d,%d ino %lu mode 0%o uid %u gid %u blocks %llu", 970562e0baSJiaying Zhang MAJOR(__entry->dev), MINOR(__entry->dev), 98a9c667f8SLukas Czerner (unsigned long) __entry->ino, __entry->mode, 99a9c667f8SLukas Czerner __entry->uid, __entry->gid, __entry->blocks) 1009bffad1eSTheodore Ts'o ); 1019bffad1eSTheodore Ts'o 1029bffad1eSTheodore Ts'o TRACE_EVENT(ext4_request_inode, 1039bffad1eSTheodore Ts'o TP_PROTO(struct inode *dir, int mode), 1049bffad1eSTheodore Ts'o 1059bffad1eSTheodore Ts'o TP_ARGS(dir, mode), 1069bffad1eSTheodore Ts'o 1079bffad1eSTheodore Ts'o TP_STRUCT__entry( 1080562e0baSJiaying Zhang __field( dev_t, dev ) 1099bffad1eSTheodore Ts'o __field( ino_t, dir ) 11059be8e72STheodore Ts'o __field( __u16, mode ) 1119bffad1eSTheodore Ts'o ), 1129bffad1eSTheodore Ts'o 1139bffad1eSTheodore Ts'o TP_fast_assign( 1140562e0baSJiaying Zhang __entry->dev = dir->i_sb->s_dev; 1159bffad1eSTheodore Ts'o __entry->dir = dir->i_ino; 1169bffad1eSTheodore Ts'o __entry->mode = mode; 1179bffad1eSTheodore Ts'o ), 1189bffad1eSTheodore Ts'o 119a269029dSTheodore Ts'o TP_printk("dev %d,%d dir %lu mode 0%o", 1200562e0baSJiaying Zhang MAJOR(__entry->dev), MINOR(__entry->dev), 121a269029dSTheodore Ts'o (unsigned long) __entry->dir, __entry->mode) 1229bffad1eSTheodore Ts'o ); 1239bffad1eSTheodore Ts'o 1249bffad1eSTheodore Ts'o TRACE_EVENT(ext4_allocate_inode, 1259bffad1eSTheodore Ts'o TP_PROTO(struct inode *inode, struct inode *dir, int mode), 1269bffad1eSTheodore Ts'o 1279bffad1eSTheodore Ts'o TP_ARGS(inode, dir, mode), 1289bffad1eSTheodore Ts'o 1299bffad1eSTheodore Ts'o TP_STRUCT__entry( 1300562e0baSJiaying Zhang __field( dev_t, dev ) 1319bffad1eSTheodore Ts'o __field( ino_t, ino ) 1329bffad1eSTheodore Ts'o __field( ino_t, dir ) 13359be8e72STheodore Ts'o __field( __u16, mode ) 1349bffad1eSTheodore Ts'o ), 1359bffad1eSTheodore Ts'o 1369bffad1eSTheodore Ts'o TP_fast_assign( 1370562e0baSJiaying Zhang __entry->dev = inode->i_sb->s_dev; 1389bffad1eSTheodore Ts'o __entry->ino = inode->i_ino; 1399bffad1eSTheodore Ts'o __entry->dir = dir->i_ino; 1409bffad1eSTheodore Ts'o __entry->mode = mode; 1419bffad1eSTheodore Ts'o ), 1429bffad1eSTheodore Ts'o 143a269029dSTheodore Ts'o TP_printk("dev %d,%d ino %lu dir %lu mode 0%o", 1440562e0baSJiaying Zhang MAJOR(__entry->dev), MINOR(__entry->dev), 145a269029dSTheodore Ts'o (unsigned long) __entry->ino, 146a3710fd1STheodore Ts'o (unsigned long) __entry->dir, __entry->mode) 1479bffad1eSTheodore Ts'o ); 1489bffad1eSTheodore Ts'o 1497ff9c073STheodore Ts'o TRACE_EVENT(ext4_evict_inode, 1507ff9c073STheodore Ts'o TP_PROTO(struct inode *inode), 1517ff9c073STheodore Ts'o 1527ff9c073STheodore Ts'o TP_ARGS(inode), 1537ff9c073STheodore Ts'o 1547ff9c073STheodore Ts'o TP_STRUCT__entry( 1550562e0baSJiaying Zhang __field( dev_t, dev ) 1567ff9c073STheodore Ts'o __field( ino_t, ino ) 1577ff9c073STheodore Ts'o __field( int, nlink ) 1587ff9c073STheodore Ts'o ), 1597ff9c073STheodore Ts'o 1607ff9c073STheodore Ts'o TP_fast_assign( 1610562e0baSJiaying Zhang __entry->dev = inode->i_sb->s_dev; 1627ff9c073STheodore Ts'o __entry->ino = inode->i_ino; 1637ff9c073STheodore Ts'o __entry->nlink = inode->i_nlink; 1647ff9c073STheodore Ts'o ), 1657ff9c073STheodore Ts'o 1667ff9c073STheodore Ts'o TP_printk("dev %d,%d ino %lu nlink %d", 1670562e0baSJiaying Zhang MAJOR(__entry->dev), MINOR(__entry->dev), 1687ff9c073STheodore Ts'o (unsigned long) __entry->ino, __entry->nlink) 1697ff9c073STheodore Ts'o ); 1707ff9c073STheodore Ts'o 1717ff9c073STheodore Ts'o TRACE_EVENT(ext4_drop_inode, 1727ff9c073STheodore Ts'o TP_PROTO(struct inode *inode, int drop), 1737ff9c073STheodore Ts'o 1747ff9c073STheodore Ts'o TP_ARGS(inode, drop), 1757ff9c073STheodore Ts'o 1767ff9c073STheodore Ts'o TP_STRUCT__entry( 1770562e0baSJiaying Zhang __field( dev_t, dev ) 1787ff9c073STheodore Ts'o __field( ino_t, ino ) 1797ff9c073STheodore Ts'o __field( int, drop ) 1807ff9c073STheodore Ts'o ), 1817ff9c073STheodore Ts'o 1827ff9c073STheodore Ts'o TP_fast_assign( 1830562e0baSJiaying Zhang __entry->dev = inode->i_sb->s_dev; 1847ff9c073STheodore Ts'o __entry->ino = inode->i_ino; 1857ff9c073STheodore Ts'o __entry->drop = drop; 1867ff9c073STheodore Ts'o ), 1877ff9c073STheodore Ts'o 1887ff9c073STheodore Ts'o TP_printk("dev %d,%d ino %lu drop %d", 1890562e0baSJiaying Zhang MAJOR(__entry->dev), MINOR(__entry->dev), 1907ff9c073STheodore Ts'o (unsigned long) __entry->ino, __entry->drop) 1917ff9c073STheodore Ts'o ); 1927ff9c073STheodore Ts'o 1937ff9c073STheodore Ts'o TRACE_EVENT(ext4_mark_inode_dirty, 1947ff9c073STheodore Ts'o TP_PROTO(struct inode *inode, unsigned long IP), 1957ff9c073STheodore Ts'o 1967ff9c073STheodore Ts'o TP_ARGS(inode, IP), 1977ff9c073STheodore Ts'o 1987ff9c073STheodore Ts'o TP_STRUCT__entry( 1990562e0baSJiaying Zhang __field( dev_t, dev ) 2007ff9c073STheodore Ts'o __field( ino_t, ino ) 2017ff9c073STheodore Ts'o __field(unsigned long, ip ) 2027ff9c073STheodore Ts'o ), 2037ff9c073STheodore Ts'o 2047ff9c073STheodore Ts'o TP_fast_assign( 2050562e0baSJiaying Zhang __entry->dev = inode->i_sb->s_dev; 2067ff9c073STheodore Ts'o __entry->ino = inode->i_ino; 2077ff9c073STheodore Ts'o __entry->ip = IP; 2087ff9c073STheodore Ts'o ), 2097ff9c073STheodore Ts'o 2107ff9c073STheodore Ts'o TP_printk("dev %d,%d ino %lu caller %pF", 2110562e0baSJiaying Zhang MAJOR(__entry->dev), MINOR(__entry->dev), 2127ff9c073STheodore Ts'o (unsigned long) __entry->ino, (void *)__entry->ip) 2137ff9c073STheodore Ts'o ); 2147ff9c073STheodore Ts'o 2157ff9c073STheodore Ts'o TRACE_EVENT(ext4_begin_ordered_truncate, 2167ff9c073STheodore Ts'o TP_PROTO(struct inode *inode, loff_t new_size), 2177ff9c073STheodore Ts'o 2187ff9c073STheodore Ts'o TP_ARGS(inode, new_size), 2197ff9c073STheodore Ts'o 2207ff9c073STheodore Ts'o TP_STRUCT__entry( 2210562e0baSJiaying Zhang __field( dev_t, dev ) 2227ff9c073STheodore Ts'o __field( ino_t, ino ) 2237ff9c073STheodore Ts'o __field( loff_t, new_size ) 2247ff9c073STheodore Ts'o ), 2257ff9c073STheodore Ts'o 2267ff9c073STheodore Ts'o TP_fast_assign( 2270562e0baSJiaying Zhang __entry->dev = inode->i_sb->s_dev; 2287ff9c073STheodore Ts'o __entry->ino = inode->i_ino; 2297ff9c073STheodore Ts'o __entry->new_size = new_size; 2307ff9c073STheodore Ts'o ), 2317ff9c073STheodore Ts'o 2327ff9c073STheodore Ts'o TP_printk("dev %d,%d ino %lu new_size %lld", 2330562e0baSJiaying Zhang MAJOR(__entry->dev), MINOR(__entry->dev), 2347ff9c073STheodore Ts'o (unsigned long) __entry->ino, 235a9c667f8SLukas Czerner __entry->new_size) 2367ff9c073STheodore Ts'o ); 2377ff9c073STheodore Ts'o 238b5eb34c3SLi Zefan DECLARE_EVENT_CLASS(ext4__write_begin, 2399bffad1eSTheodore Ts'o 2409bffad1eSTheodore Ts'o TP_PROTO(struct inode *inode, loff_t pos, unsigned int len, 2419bffad1eSTheodore Ts'o unsigned int flags), 2429bffad1eSTheodore Ts'o 2439bffad1eSTheodore Ts'o TP_ARGS(inode, pos, len, flags), 2449bffad1eSTheodore Ts'o 2459bffad1eSTheodore Ts'o TP_STRUCT__entry( 2460562e0baSJiaying Zhang __field( dev_t, dev ) 2479bffad1eSTheodore Ts'o __field( ino_t, ino ) 2489bffad1eSTheodore Ts'o __field( loff_t, pos ) 2499bffad1eSTheodore Ts'o __field( unsigned int, len ) 2509bffad1eSTheodore Ts'o __field( unsigned int, flags ) 2519bffad1eSTheodore Ts'o ), 2529bffad1eSTheodore Ts'o 2539bffad1eSTheodore Ts'o TP_fast_assign( 2540562e0baSJiaying Zhang __entry->dev = inode->i_sb->s_dev; 2559bffad1eSTheodore Ts'o __entry->ino = inode->i_ino; 2569bffad1eSTheodore Ts'o __entry->pos = pos; 2579bffad1eSTheodore Ts'o __entry->len = len; 2589bffad1eSTheodore Ts'o __entry->flags = flags; 2599bffad1eSTheodore Ts'o ), 2609bffad1eSTheodore Ts'o 261a9c667f8SLukas Czerner TP_printk("dev %d,%d ino %lu pos %lld len %u flags %u", 2620562e0baSJiaying Zhang MAJOR(__entry->dev), MINOR(__entry->dev), 263a269029dSTheodore Ts'o (unsigned long) __entry->ino, 264a3710fd1STheodore Ts'o __entry->pos, __entry->len, __entry->flags) 2659bffad1eSTheodore Ts'o ); 2669bffad1eSTheodore Ts'o 267b5eb34c3SLi Zefan DEFINE_EVENT(ext4__write_begin, ext4_write_begin, 268b5eb34c3SLi Zefan 269b5eb34c3SLi Zefan TP_PROTO(struct inode *inode, loff_t pos, unsigned int len, 270b5eb34c3SLi Zefan unsigned int flags), 271b5eb34c3SLi Zefan 272b5eb34c3SLi Zefan TP_ARGS(inode, pos, len, flags) 273b5eb34c3SLi Zefan ); 274b5eb34c3SLi Zefan 275b5eb34c3SLi Zefan DEFINE_EVENT(ext4__write_begin, ext4_da_write_begin, 276b5eb34c3SLi Zefan 277b5eb34c3SLi Zefan TP_PROTO(struct inode *inode, loff_t pos, unsigned int len, 278b5eb34c3SLi Zefan unsigned int flags), 279b5eb34c3SLi Zefan 280b5eb34c3SLi Zefan TP_ARGS(inode, pos, len, flags) 281b5eb34c3SLi Zefan ); 282b5eb34c3SLi Zefan 283b5eb34c3SLi Zefan DECLARE_EVENT_CLASS(ext4__write_end, 2849bffad1eSTheodore Ts'o TP_PROTO(struct inode *inode, loff_t pos, unsigned int len, 2859bffad1eSTheodore Ts'o unsigned int copied), 2869bffad1eSTheodore Ts'o 2879bffad1eSTheodore Ts'o TP_ARGS(inode, pos, len, copied), 2889bffad1eSTheodore Ts'o 2899bffad1eSTheodore Ts'o TP_STRUCT__entry( 2900562e0baSJiaying Zhang __field( dev_t, dev ) 2919bffad1eSTheodore Ts'o __field( ino_t, ino ) 2929bffad1eSTheodore Ts'o __field( loff_t, pos ) 2939bffad1eSTheodore Ts'o __field( unsigned int, len ) 2949bffad1eSTheodore Ts'o __field( unsigned int, copied ) 2959bffad1eSTheodore Ts'o ), 2969bffad1eSTheodore Ts'o 2979bffad1eSTheodore Ts'o TP_fast_assign( 2980562e0baSJiaying Zhang __entry->dev = inode->i_sb->s_dev; 2999bffad1eSTheodore Ts'o __entry->ino = inode->i_ino; 3009bffad1eSTheodore Ts'o __entry->pos = pos; 3019bffad1eSTheodore Ts'o __entry->len = len; 3029bffad1eSTheodore Ts'o __entry->copied = copied; 3039bffad1eSTheodore Ts'o ), 3049bffad1eSTheodore Ts'o 305a9c667f8SLukas Czerner TP_printk("dev %d,%d ino %lu pos %lld len %u copied %u", 3060562e0baSJiaying Zhang MAJOR(__entry->dev), MINOR(__entry->dev), 3070562e0baSJiaying Zhang (unsigned long) __entry->ino, 3080562e0baSJiaying Zhang __entry->pos, __entry->len, __entry->copied) 3099bffad1eSTheodore Ts'o ); 3109bffad1eSTheodore Ts'o 31174d553aaSTheodore Ts'o DEFINE_EVENT(ext4__write_end, ext4_write_end, 312b5eb34c3SLi Zefan 3139bffad1eSTheodore Ts'o TP_PROTO(struct inode *inode, loff_t pos, unsigned int len, 3149bffad1eSTheodore Ts'o unsigned int copied), 3159bffad1eSTheodore Ts'o 316b5eb34c3SLi Zefan TP_ARGS(inode, pos, len, copied) 317b5eb34c3SLi Zefan ); 3189bffad1eSTheodore Ts'o 319b5eb34c3SLi Zefan DEFINE_EVENT(ext4__write_end, ext4_journalled_write_end, 3209bffad1eSTheodore Ts'o 321b5eb34c3SLi Zefan TP_PROTO(struct inode *inode, loff_t pos, unsigned int len, 322b5eb34c3SLi Zefan unsigned int copied), 323b5eb34c3SLi Zefan 324b5eb34c3SLi Zefan TP_ARGS(inode, pos, len, copied) 325b5eb34c3SLi Zefan ); 326b5eb34c3SLi Zefan 327b5eb34c3SLi Zefan DEFINE_EVENT(ext4__write_end, ext4_da_write_end, 328b5eb34c3SLi Zefan 329b5eb34c3SLi Zefan TP_PROTO(struct inode *inode, loff_t pos, unsigned int len, 330b5eb34c3SLi Zefan unsigned int copied), 331b5eb34c3SLi Zefan 332b5eb34c3SLi Zefan TP_ARGS(inode, pos, len, copied) 3339bffad1eSTheodore Ts'o ); 3349bffad1eSTheodore Ts'o 33520970ba6STheodore Ts'o TRACE_EVENT(ext4_writepages, 3369bffad1eSTheodore Ts'o TP_PROTO(struct inode *inode, struct writeback_control *wbc), 3379bffad1eSTheodore Ts'o 3389bffad1eSTheodore Ts'o TP_ARGS(inode, wbc), 3399bffad1eSTheodore Ts'o 3409bffad1eSTheodore Ts'o TP_STRUCT__entry( 3410562e0baSJiaying Zhang __field( dev_t, dev ) 3429bffad1eSTheodore Ts'o __field( ino_t, ino ) 3439bffad1eSTheodore Ts'o __field( long, nr_to_write ) 3449bffad1eSTheodore Ts'o __field( long, pages_skipped ) 3459bffad1eSTheodore Ts'o __field( loff_t, range_start ) 3469bffad1eSTheodore Ts'o __field( loff_t, range_end ) 347210c0526SAnatol Pomozov __field( pgoff_t, writeback_index ) 3480562e0baSJiaying Zhang __field( int, sync_mode ) 3499bffad1eSTheodore Ts'o __field( char, for_kupdate ) 3509bffad1eSTheodore Ts'o __field( char, range_cyclic ) 3519bffad1eSTheodore Ts'o ), 3529bffad1eSTheodore Ts'o 3539bffad1eSTheodore Ts'o TP_fast_assign( 3540562e0baSJiaying Zhang __entry->dev = inode->i_sb->s_dev; 3559bffad1eSTheodore Ts'o __entry->ino = inode->i_ino; 3569bffad1eSTheodore Ts'o __entry->nr_to_write = wbc->nr_to_write; 3579bffad1eSTheodore Ts'o __entry->pages_skipped = wbc->pages_skipped; 3589bffad1eSTheodore Ts'o __entry->range_start = wbc->range_start; 3599bffad1eSTheodore Ts'o __entry->range_end = wbc->range_end; 360210c0526SAnatol Pomozov __entry->writeback_index = inode->i_mapping->writeback_index; 3610562e0baSJiaying Zhang __entry->sync_mode = wbc->sync_mode; 3629bffad1eSTheodore Ts'o __entry->for_kupdate = wbc->for_kupdate; 3639bffad1eSTheodore Ts'o __entry->range_cyclic = wbc->range_cyclic; 3649bffad1eSTheodore Ts'o ), 3659bffad1eSTheodore Ts'o 366a107e5a3STheodore Ts'o TP_printk("dev %d,%d ino %lu nr_to_write %ld pages_skipped %ld " 367a9c667f8SLukas Czerner "range_start %lld range_end %lld sync_mode %d " 3680562e0baSJiaying Zhang "for_kupdate %d range_cyclic %d writeback_index %lu", 3690562e0baSJiaying Zhang MAJOR(__entry->dev), MINOR(__entry->dev), 370a3710fd1STheodore Ts'o (unsigned long) __entry->ino, __entry->nr_to_write, 3719bffad1eSTheodore Ts'o __entry->pages_skipped, __entry->range_start, 3720562e0baSJiaying Zhang __entry->range_end, __entry->sync_mode, 3730562e0baSJiaying Zhang __entry->for_kupdate, __entry->range_cyclic, 37455138e0bSTheodore Ts'o (unsigned long) __entry->writeback_index) 3759bffad1eSTheodore Ts'o ); 3769bffad1eSTheodore Ts'o 377b3a3ca8cSTheodore Ts'o TRACE_EVENT(ext4_da_write_pages, 3784e7ea81dSJan Kara TP_PROTO(struct inode *inode, pgoff_t first_page, 3794e7ea81dSJan Kara struct writeback_control *wbc), 380b3a3ca8cSTheodore Ts'o 3814e7ea81dSJan Kara TP_ARGS(inode, first_page, wbc), 382b3a3ca8cSTheodore Ts'o 383b3a3ca8cSTheodore Ts'o TP_STRUCT__entry( 3840562e0baSJiaying Zhang __field( dev_t, dev ) 385b3a3ca8cSTheodore Ts'o __field( ino_t, ino ) 3864e7ea81dSJan Kara __field( pgoff_t, first_page ) 3874e7ea81dSJan Kara __field( long, nr_to_write ) 3880562e0baSJiaying Zhang __field( int, sync_mode ) 389b3a3ca8cSTheodore Ts'o ), 390b3a3ca8cSTheodore Ts'o 391b3a3ca8cSTheodore Ts'o TP_fast_assign( 3920562e0baSJiaying Zhang __entry->dev = inode->i_sb->s_dev; 393b3a3ca8cSTheodore Ts'o __entry->ino = inode->i_ino; 3944e7ea81dSJan Kara __entry->first_page = first_page; 3954e7ea81dSJan Kara __entry->nr_to_write = wbc->nr_to_write; 3964e7ea81dSJan Kara __entry->sync_mode = wbc->sync_mode; 397b3a3ca8cSTheodore Ts'o ), 398b3a3ca8cSTheodore Ts'o 3994e7ea81dSJan Kara TP_printk("dev %d,%d ino %lu first_page %lu nr_to_write %ld " 4004e7ea81dSJan Kara "sync_mode %d", 4010562e0baSJiaying Zhang MAJOR(__entry->dev), MINOR(__entry->dev), 4024e7ea81dSJan Kara (unsigned long) __entry->ino, __entry->first_page, 4034e7ea81dSJan Kara __entry->nr_to_write, __entry->sync_mode) 4044e7ea81dSJan Kara ); 4054e7ea81dSJan Kara 4064e7ea81dSJan Kara TRACE_EVENT(ext4_da_write_pages_extent, 4074e7ea81dSJan Kara TP_PROTO(struct inode *inode, struct ext4_map_blocks *map), 4084e7ea81dSJan Kara 4094e7ea81dSJan Kara TP_ARGS(inode, map), 4104e7ea81dSJan Kara 4114e7ea81dSJan Kara TP_STRUCT__entry( 4124e7ea81dSJan Kara __field( dev_t, dev ) 4134e7ea81dSJan Kara __field( ino_t, ino ) 4144e7ea81dSJan Kara __field( __u64, lblk ) 4154e7ea81dSJan Kara __field( __u32, len ) 4164e7ea81dSJan Kara __field( __u32, flags ) 4174e7ea81dSJan Kara ), 4184e7ea81dSJan Kara 4194e7ea81dSJan Kara TP_fast_assign( 4204e7ea81dSJan Kara __entry->dev = inode->i_sb->s_dev; 4214e7ea81dSJan Kara __entry->ino = inode->i_ino; 4224e7ea81dSJan Kara __entry->lblk = map->m_lblk; 4234e7ea81dSJan Kara __entry->len = map->m_len; 4244e7ea81dSJan Kara __entry->flags = map->m_flags; 4254e7ea81dSJan Kara ), 4264e7ea81dSJan Kara 42721ddd568STheodore Ts'o TP_printk("dev %d,%d ino %lu lblk %llu len %u flags %s", 4284e7ea81dSJan Kara MAJOR(__entry->dev), MINOR(__entry->dev), 4294e7ea81dSJan Kara (unsigned long) __entry->ino, __entry->lblk, __entry->len, 43021ddd568STheodore Ts'o show_mflags(__entry->flags)) 431b3a3ca8cSTheodore Ts'o ); 432b3a3ca8cSTheodore Ts'o 43320970ba6STheodore Ts'o TRACE_EVENT(ext4_writepages_result, 4349bffad1eSTheodore Ts'o TP_PROTO(struct inode *inode, struct writeback_control *wbc, 4359bffad1eSTheodore Ts'o int ret, int pages_written), 4369bffad1eSTheodore Ts'o 4379bffad1eSTheodore Ts'o TP_ARGS(inode, wbc, ret, pages_written), 4389bffad1eSTheodore Ts'o 4399bffad1eSTheodore Ts'o TP_STRUCT__entry( 4400562e0baSJiaying Zhang __field( dev_t, dev ) 4419bffad1eSTheodore Ts'o __field( ino_t, ino ) 4429bffad1eSTheodore Ts'o __field( int, ret ) 4439bffad1eSTheodore Ts'o __field( int, pages_written ) 4449bffad1eSTheodore Ts'o __field( long, pages_skipped ) 44555138e0bSTheodore Ts'o __field( pgoff_t, writeback_index ) 446210c0526SAnatol Pomozov __field( int, sync_mode ) 4479bffad1eSTheodore Ts'o ), 4489bffad1eSTheodore Ts'o 4499bffad1eSTheodore Ts'o TP_fast_assign( 4500562e0baSJiaying Zhang __entry->dev = inode->i_sb->s_dev; 4519bffad1eSTheodore Ts'o __entry->ino = inode->i_ino; 4529bffad1eSTheodore Ts'o __entry->ret = ret; 4539bffad1eSTheodore Ts'o __entry->pages_written = pages_written; 4549bffad1eSTheodore Ts'o __entry->pages_skipped = wbc->pages_skipped; 45555138e0bSTheodore Ts'o __entry->writeback_index = inode->i_mapping->writeback_index; 456210c0526SAnatol Pomozov __entry->sync_mode = wbc->sync_mode; 4579bffad1eSTheodore Ts'o ), 4589bffad1eSTheodore Ts'o 4590562e0baSJiaying Zhang TP_printk("dev %d,%d ino %lu ret %d pages_written %d pages_skipped %ld " 460b7a2441fSWu Fengguang "sync_mode %d writeback_index %lu", 4610562e0baSJiaying Zhang MAJOR(__entry->dev), MINOR(__entry->dev), 462a3710fd1STheodore Ts'o (unsigned long) __entry->ino, __entry->ret, 4639bffad1eSTheodore Ts'o __entry->pages_written, __entry->pages_skipped, 464b7a2441fSWu Fengguang __entry->sync_mode, 46555138e0bSTheodore Ts'o (unsigned long) __entry->writeback_index) 4669bffad1eSTheodore Ts'o ); 4679bffad1eSTheodore Ts'o 4680562e0baSJiaying Zhang DECLARE_EVENT_CLASS(ext4__page_op, 4690562e0baSJiaying Zhang TP_PROTO(struct page *page), 4700562e0baSJiaying Zhang 4710562e0baSJiaying Zhang TP_ARGS(page), 4720562e0baSJiaying Zhang 4730562e0baSJiaying Zhang TP_STRUCT__entry( 4740562e0baSJiaying Zhang __field( dev_t, dev ) 475210c0526SAnatol Pomozov __field( ino_t, ino ) 476210c0526SAnatol Pomozov __field( pgoff_t, index ) 4770562e0baSJiaying Zhang 4780562e0baSJiaying Zhang ), 4790562e0baSJiaying Zhang 4800562e0baSJiaying Zhang TP_fast_assign( 4810562e0baSJiaying Zhang __entry->dev = page->mapping->host->i_sb->s_dev; 482210c0526SAnatol Pomozov __entry->ino = page->mapping->host->i_ino; 483210c0526SAnatol Pomozov __entry->index = page->index; 4840562e0baSJiaying Zhang ), 4850562e0baSJiaying Zhang 4860562e0baSJiaying Zhang TP_printk("dev %d,%d ino %lu page_index %lu", 4870562e0baSJiaying Zhang MAJOR(__entry->dev), MINOR(__entry->dev), 4880562e0baSJiaying Zhang (unsigned long) __entry->ino, 489a9c667f8SLukas Czerner (unsigned long) __entry->index) 490a9c667f8SLukas Czerner ); 491a9c667f8SLukas Czerner 492a9c667f8SLukas Czerner DEFINE_EVENT(ext4__page_op, ext4_writepage, 493a9c667f8SLukas Czerner 494a9c667f8SLukas Czerner TP_PROTO(struct page *page), 495a9c667f8SLukas Czerner 496a9c667f8SLukas Czerner TP_ARGS(page) 4970562e0baSJiaying Zhang ); 4980562e0baSJiaying Zhang 4990562e0baSJiaying Zhang DEFINE_EVENT(ext4__page_op, ext4_readpage, 5000562e0baSJiaying Zhang 5010562e0baSJiaying Zhang TP_PROTO(struct page *page), 5020562e0baSJiaying Zhang 5030562e0baSJiaying Zhang TP_ARGS(page) 5040562e0baSJiaying Zhang ); 5050562e0baSJiaying Zhang 5060562e0baSJiaying Zhang DEFINE_EVENT(ext4__page_op, ext4_releasepage, 5070562e0baSJiaying Zhang 5080562e0baSJiaying Zhang TP_PROTO(struct page *page), 5090562e0baSJiaying Zhang 5100562e0baSJiaying Zhang TP_ARGS(page) 5110562e0baSJiaying Zhang ); 5120562e0baSJiaying Zhang 5134520fb3cSJan Kara DECLARE_EVENT_CLASS(ext4_invalidatepage_op, 514ca99fdd2SLukas Czerner TP_PROTO(struct page *page, unsigned int offset, unsigned int length), 5150562e0baSJiaying Zhang 516ca99fdd2SLukas Czerner TP_ARGS(page, offset, length), 5170562e0baSJiaying Zhang 5180562e0baSJiaying Zhang TP_STRUCT__entry( 519210c0526SAnatol Pomozov __field( dev_t, dev ) 520210c0526SAnatol Pomozov __field( ino_t, ino ) 5210562e0baSJiaying Zhang __field( pgoff_t, index ) 522ca99fdd2SLukas Czerner __field( unsigned int, offset ) 523ca99fdd2SLukas Czerner __field( unsigned int, length ) 5240562e0baSJiaying Zhang ), 5250562e0baSJiaying Zhang 5260562e0baSJiaying Zhang TP_fast_assign( 527210c0526SAnatol Pomozov __entry->dev = page->mapping->host->i_sb->s_dev; 528210c0526SAnatol Pomozov __entry->ino = page->mapping->host->i_ino; 5290562e0baSJiaying Zhang __entry->index = page->index; 5300562e0baSJiaying Zhang __entry->offset = offset; 531ca99fdd2SLukas Czerner __entry->length = length; 5320562e0baSJiaying Zhang ), 5330562e0baSJiaying Zhang 534ca99fdd2SLukas Czerner TP_printk("dev %d,%d ino %lu page_index %lu offset %u length %u", 5350562e0baSJiaying Zhang MAJOR(__entry->dev), MINOR(__entry->dev), 5360562e0baSJiaying Zhang (unsigned long) __entry->ino, 537ca99fdd2SLukas Czerner (unsigned long) __entry->index, 538ca99fdd2SLukas Czerner __entry->offset, __entry->length) 5390562e0baSJiaying Zhang ); 5400562e0baSJiaying Zhang 5414520fb3cSJan Kara DEFINE_EVENT(ext4_invalidatepage_op, ext4_invalidatepage, 542ca99fdd2SLukas Czerner TP_PROTO(struct page *page, unsigned int offset, unsigned int length), 5434520fb3cSJan Kara 544ca99fdd2SLukas Czerner TP_ARGS(page, offset, length) 5454520fb3cSJan Kara ); 5464520fb3cSJan Kara 5474520fb3cSJan Kara DEFINE_EVENT(ext4_invalidatepage_op, ext4_journalled_invalidatepage, 548ca99fdd2SLukas Czerner TP_PROTO(struct page *page, unsigned int offset, unsigned int length), 5494520fb3cSJan Kara 550ca99fdd2SLukas Czerner TP_ARGS(page, offset, length) 5514520fb3cSJan Kara ); 5524520fb3cSJan Kara 5539bffad1eSTheodore Ts'o TRACE_EVENT(ext4_discard_blocks, 5549bffad1eSTheodore Ts'o TP_PROTO(struct super_block *sb, unsigned long long blk, 5559bffad1eSTheodore Ts'o unsigned long long count), 5569bffad1eSTheodore Ts'o 5579bffad1eSTheodore Ts'o TP_ARGS(sb, blk, count), 5589bffad1eSTheodore Ts'o 5599bffad1eSTheodore Ts'o TP_STRUCT__entry( 5600562e0baSJiaying Zhang __field( dev_t, dev ) 5619bffad1eSTheodore Ts'o __field( __u64, blk ) 5629bffad1eSTheodore Ts'o __field( __u64, count ) 5639bffad1eSTheodore Ts'o 5649bffad1eSTheodore Ts'o ), 5659bffad1eSTheodore Ts'o 5669bffad1eSTheodore Ts'o TP_fast_assign( 5670562e0baSJiaying Zhang __entry->dev = sb->s_dev; 5689bffad1eSTheodore Ts'o __entry->blk = blk; 5699bffad1eSTheodore Ts'o __entry->count = count; 5709bffad1eSTheodore Ts'o ), 5719bffad1eSTheodore Ts'o 572a269029dSTheodore Ts'o TP_printk("dev %d,%d blk %llu count %llu", 5730562e0baSJiaying Zhang MAJOR(__entry->dev), MINOR(__entry->dev), 574a269029dSTheodore Ts'o __entry->blk, __entry->count) 5759bffad1eSTheodore Ts'o ); 5769bffad1eSTheodore Ts'o 577f084db93SLi Zefan DECLARE_EVENT_CLASS(ext4__mb_new_pa, 5789bffad1eSTheodore Ts'o TP_PROTO(struct ext4_allocation_context *ac, 5799bffad1eSTheodore Ts'o struct ext4_prealloc_space *pa), 5809bffad1eSTheodore Ts'o 5819bffad1eSTheodore Ts'o TP_ARGS(ac, pa), 5829bffad1eSTheodore Ts'o 5839bffad1eSTheodore Ts'o TP_STRUCT__entry( 5840562e0baSJiaying Zhang __field( dev_t, dev ) 5859bffad1eSTheodore Ts'o __field( ino_t, ino ) 5869bffad1eSTheodore Ts'o __field( __u64, pa_pstart ) 5879bffad1eSTheodore Ts'o __field( __u64, pa_lstart ) 588210c0526SAnatol Pomozov __field( __u32, pa_len ) 5899bffad1eSTheodore Ts'o 5909bffad1eSTheodore Ts'o ), 5919bffad1eSTheodore Ts'o 5929bffad1eSTheodore Ts'o TP_fast_assign( 5930562e0baSJiaying Zhang __entry->dev = ac->ac_sb->s_dev; 5949bffad1eSTheodore Ts'o __entry->ino = ac->ac_inode->i_ino; 5959bffad1eSTheodore Ts'o __entry->pa_pstart = pa->pa_pstart; 5969bffad1eSTheodore Ts'o __entry->pa_lstart = pa->pa_lstart; 597210c0526SAnatol Pomozov __entry->pa_len = pa->pa_len; 5989bffad1eSTheodore Ts'o ), 5999bffad1eSTheodore Ts'o 600a269029dSTheodore Ts'o TP_printk("dev %d,%d ino %lu pstart %llu len %u lstart %llu", 6010562e0baSJiaying Zhang MAJOR(__entry->dev), MINOR(__entry->dev), 6020562e0baSJiaying Zhang (unsigned long) __entry->ino, 6030562e0baSJiaying Zhang __entry->pa_pstart, __entry->pa_len, __entry->pa_lstart) 6049bffad1eSTheodore Ts'o ); 6059bffad1eSTheodore Ts'o 606f084db93SLi Zefan DEFINE_EVENT(ext4__mb_new_pa, ext4_mb_new_inode_pa, 607f084db93SLi Zefan 6089bffad1eSTheodore Ts'o TP_PROTO(struct ext4_allocation_context *ac, 6099bffad1eSTheodore Ts'o struct ext4_prealloc_space *pa), 6109bffad1eSTheodore Ts'o 611f084db93SLi Zefan TP_ARGS(ac, pa) 612f084db93SLi Zefan ); 6139bffad1eSTheodore Ts'o 614f084db93SLi Zefan DEFINE_EVENT(ext4__mb_new_pa, ext4_mb_new_group_pa, 6159bffad1eSTheodore Ts'o 616f084db93SLi Zefan TP_PROTO(struct ext4_allocation_context *ac, 617f084db93SLi Zefan struct ext4_prealloc_space *pa), 6189bffad1eSTheodore Ts'o 619f084db93SLi Zefan TP_ARGS(ac, pa) 6209bffad1eSTheodore Ts'o ); 6219bffad1eSTheodore Ts'o 6229bffad1eSTheodore Ts'o TRACE_EVENT(ext4_mb_release_inode_pa, 623a9c667f8SLukas Czerner TP_PROTO(struct ext4_prealloc_space *pa, 6249bffad1eSTheodore Ts'o unsigned long long block, unsigned int count), 6259bffad1eSTheodore Ts'o 626a9c667f8SLukas Czerner TP_ARGS(pa, block, count), 6279bffad1eSTheodore Ts'o 6289bffad1eSTheodore Ts'o TP_STRUCT__entry( 6290562e0baSJiaying Zhang __field( dev_t, dev ) 6309bffad1eSTheodore Ts'o __field( ino_t, ino ) 6319bffad1eSTheodore Ts'o __field( __u64, block ) 6329bffad1eSTheodore Ts'o __field( __u32, count ) 6339bffad1eSTheodore Ts'o 6349bffad1eSTheodore Ts'o ), 6359bffad1eSTheodore Ts'o 6369bffad1eSTheodore Ts'o TP_fast_assign( 637a9c667f8SLukas Czerner __entry->dev = pa->pa_inode->i_sb->s_dev; 638a9c667f8SLukas Czerner __entry->ino = pa->pa_inode->i_ino; 6399bffad1eSTheodore Ts'o __entry->block = block; 6409bffad1eSTheodore Ts'o __entry->count = count; 6419bffad1eSTheodore Ts'o ), 6429bffad1eSTheodore Ts'o 643a269029dSTheodore Ts'o TP_printk("dev %d,%d ino %lu block %llu count %u", 6440562e0baSJiaying Zhang MAJOR(__entry->dev), MINOR(__entry->dev), 6450562e0baSJiaying Zhang (unsigned long) __entry->ino, 6460562e0baSJiaying Zhang __entry->block, __entry->count) 6479bffad1eSTheodore Ts'o ); 6489bffad1eSTheodore Ts'o 6499bffad1eSTheodore Ts'o TRACE_EVENT(ext4_mb_release_group_pa, 65060e07cf5SYongqiang Yang TP_PROTO(struct super_block *sb, struct ext4_prealloc_space *pa), 6519bffad1eSTheodore Ts'o 65260e07cf5SYongqiang Yang TP_ARGS(sb, pa), 6539bffad1eSTheodore Ts'o 6549bffad1eSTheodore Ts'o TP_STRUCT__entry( 6550562e0baSJiaying Zhang __field( dev_t, dev ) 6569bffad1eSTheodore Ts'o __field( __u64, pa_pstart ) 6579bffad1eSTheodore Ts'o __field( __u32, pa_len ) 6589bffad1eSTheodore Ts'o 6599bffad1eSTheodore Ts'o ), 6609bffad1eSTheodore Ts'o 6619bffad1eSTheodore Ts'o TP_fast_assign( 66260e07cf5SYongqiang Yang __entry->dev = sb->s_dev; 6639bffad1eSTheodore Ts'o __entry->pa_pstart = pa->pa_pstart; 6649bffad1eSTheodore Ts'o __entry->pa_len = pa->pa_len; 6659bffad1eSTheodore Ts'o ), 6669bffad1eSTheodore Ts'o 667a269029dSTheodore Ts'o TP_printk("dev %d,%d pstart %llu len %u", 6680562e0baSJiaying Zhang MAJOR(__entry->dev), MINOR(__entry->dev), 669a269029dSTheodore Ts'o __entry->pa_pstart, __entry->pa_len) 6709bffad1eSTheodore Ts'o ); 6719bffad1eSTheodore Ts'o 6729bffad1eSTheodore Ts'o TRACE_EVENT(ext4_discard_preallocations, 6739bffad1eSTheodore Ts'o TP_PROTO(struct inode *inode), 6749bffad1eSTheodore Ts'o 6759bffad1eSTheodore Ts'o TP_ARGS(inode), 6769bffad1eSTheodore Ts'o 6779bffad1eSTheodore Ts'o TP_STRUCT__entry( 6780562e0baSJiaying Zhang __field( dev_t, dev ) 6799bffad1eSTheodore Ts'o __field( ino_t, ino ) 6809bffad1eSTheodore Ts'o 6819bffad1eSTheodore Ts'o ), 6829bffad1eSTheodore Ts'o 6839bffad1eSTheodore Ts'o TP_fast_assign( 6840562e0baSJiaying Zhang __entry->dev = inode->i_sb->s_dev; 6859bffad1eSTheodore Ts'o __entry->ino = inode->i_ino; 6869bffad1eSTheodore Ts'o ), 6879bffad1eSTheodore Ts'o 688a269029dSTheodore Ts'o TP_printk("dev %d,%d ino %lu", 6890562e0baSJiaying Zhang MAJOR(__entry->dev), MINOR(__entry->dev), 690a269029dSTheodore Ts'o (unsigned long) __entry->ino) 6919bffad1eSTheodore Ts'o ); 6929bffad1eSTheodore Ts'o 6939bffad1eSTheodore Ts'o TRACE_EVENT(ext4_mb_discard_preallocations, 6949bffad1eSTheodore Ts'o TP_PROTO(struct super_block *sb, int needed), 6959bffad1eSTheodore Ts'o 6969bffad1eSTheodore Ts'o TP_ARGS(sb, needed), 6979bffad1eSTheodore Ts'o 6989bffad1eSTheodore Ts'o TP_STRUCT__entry( 6990562e0baSJiaying Zhang __field( dev_t, dev ) 7009bffad1eSTheodore Ts'o __field( int, needed ) 7019bffad1eSTheodore Ts'o 7029bffad1eSTheodore Ts'o ), 7039bffad1eSTheodore Ts'o 7049bffad1eSTheodore Ts'o TP_fast_assign( 7050562e0baSJiaying Zhang __entry->dev = sb->s_dev; 7069bffad1eSTheodore Ts'o __entry->needed = needed; 7079bffad1eSTheodore Ts'o ), 7089bffad1eSTheodore Ts'o 709a269029dSTheodore Ts'o TP_printk("dev %d,%d needed %d", 7100562e0baSJiaying Zhang MAJOR(__entry->dev), MINOR(__entry->dev), 7110562e0baSJiaying Zhang __entry->needed) 7129bffad1eSTheodore Ts'o ); 7139bffad1eSTheodore Ts'o 7149bffad1eSTheodore Ts'o TRACE_EVENT(ext4_request_blocks, 7159bffad1eSTheodore Ts'o TP_PROTO(struct ext4_allocation_request *ar), 7169bffad1eSTheodore Ts'o 7179bffad1eSTheodore Ts'o TP_ARGS(ar), 7189bffad1eSTheodore Ts'o 7199bffad1eSTheodore Ts'o TP_STRUCT__entry( 7200562e0baSJiaying Zhang __field( dev_t, dev ) 7219bffad1eSTheodore Ts'o __field( ino_t, ino ) 7229bffad1eSTheodore Ts'o __field( unsigned int, len ) 723a9c667f8SLukas Czerner __field( __u32, logical ) 724a9c667f8SLukas Czerner __field( __u32, lleft ) 725a9c667f8SLukas Czerner __field( __u32, lright ) 7269bffad1eSTheodore Ts'o __field( __u64, goal ) 7279bffad1eSTheodore Ts'o __field( __u64, pleft ) 7289bffad1eSTheodore Ts'o __field( __u64, pright ) 729210c0526SAnatol Pomozov __field( unsigned int, flags ) 7309bffad1eSTheodore Ts'o ), 7319bffad1eSTheodore Ts'o 7329bffad1eSTheodore Ts'o TP_fast_assign( 7330562e0baSJiaying Zhang __entry->dev = ar->inode->i_sb->s_dev; 7349bffad1eSTheodore Ts'o __entry->ino = ar->inode->i_ino; 7359bffad1eSTheodore Ts'o __entry->len = ar->len; 7369bffad1eSTheodore Ts'o __entry->logical = ar->logical; 7379bffad1eSTheodore Ts'o __entry->goal = ar->goal; 7389bffad1eSTheodore Ts'o __entry->lleft = ar->lleft; 7399bffad1eSTheodore Ts'o __entry->lright = ar->lright; 7409bffad1eSTheodore Ts'o __entry->pleft = ar->pleft; 7419bffad1eSTheodore Ts'o __entry->pright = ar->pright; 742210c0526SAnatol Pomozov __entry->flags = ar->flags; 7439bffad1eSTheodore Ts'o ), 7449bffad1eSTheodore Ts'o 74521ddd568STheodore Ts'o TP_printk("dev %d,%d ino %lu flags %s len %u lblk %u goal %llu " 746a9c667f8SLukas Czerner "lleft %u lright %u pleft %llu pright %llu ", 7470562e0baSJiaying Zhang MAJOR(__entry->dev), MINOR(__entry->dev), 74821ddd568STheodore Ts'o (unsigned long) __entry->ino, show_mballoc_flags(__entry->flags), 749a9c667f8SLukas Czerner __entry->len, __entry->logical, __entry->goal, 750a9c667f8SLukas Czerner __entry->lleft, __entry->lright, __entry->pleft, 751a9c667f8SLukas Czerner __entry->pright) 7529bffad1eSTheodore Ts'o ); 7539bffad1eSTheodore Ts'o 7549bffad1eSTheodore Ts'o TRACE_EVENT(ext4_allocate_blocks, 7559bffad1eSTheodore Ts'o TP_PROTO(struct ext4_allocation_request *ar, unsigned long long block), 7569bffad1eSTheodore Ts'o 7579bffad1eSTheodore Ts'o TP_ARGS(ar, block), 7589bffad1eSTheodore Ts'o 7599bffad1eSTheodore Ts'o TP_STRUCT__entry( 7600562e0baSJiaying Zhang __field( dev_t, dev ) 7619bffad1eSTheodore Ts'o __field( ino_t, ino ) 7629bffad1eSTheodore Ts'o __field( __u64, block ) 7639bffad1eSTheodore Ts'o __field( unsigned int, len ) 764a9c667f8SLukas Czerner __field( __u32, logical ) 765a9c667f8SLukas Czerner __field( __u32, lleft ) 766a9c667f8SLukas Czerner __field( __u32, lright ) 7679bffad1eSTheodore Ts'o __field( __u64, goal ) 7689bffad1eSTheodore Ts'o __field( __u64, pleft ) 7699bffad1eSTheodore Ts'o __field( __u64, pright ) 770210c0526SAnatol Pomozov __field( unsigned int, flags ) 7719bffad1eSTheodore Ts'o ), 7729bffad1eSTheodore Ts'o 7739bffad1eSTheodore Ts'o TP_fast_assign( 7740562e0baSJiaying Zhang __entry->dev = ar->inode->i_sb->s_dev; 7759bffad1eSTheodore Ts'o __entry->ino = ar->inode->i_ino; 7769bffad1eSTheodore Ts'o __entry->block = block; 7779bffad1eSTheodore Ts'o __entry->len = ar->len; 7789bffad1eSTheodore Ts'o __entry->logical = ar->logical; 7799bffad1eSTheodore Ts'o __entry->goal = ar->goal; 7809bffad1eSTheodore Ts'o __entry->lleft = ar->lleft; 7819bffad1eSTheodore Ts'o __entry->lright = ar->lright; 7829bffad1eSTheodore Ts'o __entry->pleft = ar->pleft; 7839bffad1eSTheodore Ts'o __entry->pright = ar->pright; 784210c0526SAnatol Pomozov __entry->flags = ar->flags; 7859bffad1eSTheodore Ts'o ), 7869bffad1eSTheodore Ts'o 78721ddd568STheodore Ts'o TP_printk("dev %d,%d ino %lu flags %s len %u block %llu lblk %u " 788a9c667f8SLukas Czerner "goal %llu lleft %u lright %u pleft %llu pright %llu", 7890562e0baSJiaying Zhang MAJOR(__entry->dev), MINOR(__entry->dev), 79021ddd568STheodore Ts'o (unsigned long) __entry->ino, show_mballoc_flags(__entry->flags), 791a9c667f8SLukas Czerner __entry->len, __entry->block, __entry->logical, 792a9c667f8SLukas Czerner __entry->goal, __entry->lleft, __entry->lright, 793a9c667f8SLukas Czerner __entry->pleft, __entry->pright) 7949bffad1eSTheodore Ts'o ); 7959bffad1eSTheodore Ts'o 7969bffad1eSTheodore Ts'o TRACE_EVENT(ext4_free_blocks, 7979bffad1eSTheodore Ts'o TP_PROTO(struct inode *inode, __u64 block, unsigned long count, 798e6362609STheodore Ts'o int flags), 7999bffad1eSTheodore Ts'o 800e6362609STheodore Ts'o TP_ARGS(inode, block, count, flags), 8019bffad1eSTheodore Ts'o 8029bffad1eSTheodore Ts'o TP_STRUCT__entry( 8030562e0baSJiaying Zhang __field( dev_t, dev ) 8049bffad1eSTheodore Ts'o __field( ino_t, ino ) 8059bffad1eSTheodore Ts'o __field( __u64, block ) 8069bffad1eSTheodore Ts'o __field( unsigned long, count ) 807e6362609STheodore Ts'o __field( int, flags ) 808210c0526SAnatol Pomozov __field( __u16, mode ) 8099bffad1eSTheodore Ts'o ), 8109bffad1eSTheodore Ts'o 8119bffad1eSTheodore Ts'o TP_fast_assign( 8120562e0baSJiaying Zhang __entry->dev = inode->i_sb->s_dev; 8139bffad1eSTheodore Ts'o __entry->ino = inode->i_ino; 8149bffad1eSTheodore Ts'o __entry->block = block; 8159bffad1eSTheodore Ts'o __entry->count = count; 816e6362609STheodore Ts'o __entry->flags = flags; 817210c0526SAnatol Pomozov __entry->mode = inode->i_mode; 8189bffad1eSTheodore Ts'o ), 8199bffad1eSTheodore Ts'o 82021ddd568STheodore Ts'o TP_printk("dev %d,%d ino %lu mode 0%o block %llu count %lu flags %s", 8210562e0baSJiaying Zhang MAJOR(__entry->dev), MINOR(__entry->dev), 822a269029dSTheodore Ts'o (unsigned long) __entry->ino, 823e6362609STheodore Ts'o __entry->mode, __entry->block, __entry->count, 82421ddd568STheodore Ts'o show_free_flags(__entry->flags)) 8259bffad1eSTheodore Ts'o ); 8269bffad1eSTheodore Ts'o 8270562e0baSJiaying Zhang TRACE_EVENT(ext4_sync_file_enter, 8287ea80859SChristoph Hellwig TP_PROTO(struct file *file, int datasync), 8299bffad1eSTheodore Ts'o 8307ea80859SChristoph Hellwig TP_ARGS(file, datasync), 8319bffad1eSTheodore Ts'o 8329bffad1eSTheodore Ts'o TP_STRUCT__entry( 8330562e0baSJiaying Zhang __field( dev_t, dev ) 8349bffad1eSTheodore Ts'o __field( ino_t, ino ) 8359bffad1eSTheodore Ts'o __field( ino_t, parent ) 8369bffad1eSTheodore Ts'o __field( int, datasync ) 8379bffad1eSTheodore Ts'o ), 8389bffad1eSTheodore Ts'o 8399bffad1eSTheodore Ts'o TP_fast_assign( 8407ea80859SChristoph Hellwig struct dentry *dentry = file->f_path.dentry; 8417ea80859SChristoph Hellwig 8420562e0baSJiaying Zhang __entry->dev = dentry->d_inode->i_sb->s_dev; 8439bffad1eSTheodore Ts'o __entry->ino = dentry->d_inode->i_ino; 8449bffad1eSTheodore Ts'o __entry->datasync = datasync; 8459bffad1eSTheodore Ts'o __entry->parent = dentry->d_parent->d_inode->i_ino; 8469bffad1eSTheodore Ts'o ), 8479bffad1eSTheodore Ts'o 848a9c667f8SLukas Czerner TP_printk("dev %d,%d ino %lu parent %lu datasync %d ", 8490562e0baSJiaying Zhang MAJOR(__entry->dev), MINOR(__entry->dev), 850a269029dSTheodore Ts'o (unsigned long) __entry->ino, 851a3710fd1STheodore Ts'o (unsigned long) __entry->parent, __entry->datasync) 8529bffad1eSTheodore Ts'o ); 8539bffad1eSTheodore Ts'o 8540562e0baSJiaying Zhang TRACE_EVENT(ext4_sync_file_exit, 8550562e0baSJiaying Zhang TP_PROTO(struct inode *inode, int ret), 8560562e0baSJiaying Zhang 8570562e0baSJiaying Zhang TP_ARGS(inode, ret), 8580562e0baSJiaying Zhang 8590562e0baSJiaying Zhang TP_STRUCT__entry( 8600562e0baSJiaying Zhang __field( dev_t, dev ) 861210c0526SAnatol Pomozov __field( ino_t, ino ) 862210c0526SAnatol Pomozov __field( int, ret ) 8630562e0baSJiaying Zhang ), 8640562e0baSJiaying Zhang 8650562e0baSJiaying Zhang TP_fast_assign( 8660562e0baSJiaying Zhang __entry->dev = inode->i_sb->s_dev; 867210c0526SAnatol Pomozov __entry->ino = inode->i_ino; 868210c0526SAnatol Pomozov __entry->ret = ret; 8690562e0baSJiaying Zhang ), 8700562e0baSJiaying Zhang 871a9c667f8SLukas Czerner TP_printk("dev %d,%d ino %lu ret %d", 8720562e0baSJiaying Zhang MAJOR(__entry->dev), MINOR(__entry->dev), 8730562e0baSJiaying Zhang (unsigned long) __entry->ino, 8740562e0baSJiaying Zhang __entry->ret) 8750562e0baSJiaying Zhang ); 8760562e0baSJiaying Zhang 8779bffad1eSTheodore Ts'o TRACE_EVENT(ext4_sync_fs, 8789bffad1eSTheodore Ts'o TP_PROTO(struct super_block *sb, int wait), 8799bffad1eSTheodore Ts'o 8809bffad1eSTheodore Ts'o TP_ARGS(sb, wait), 8819bffad1eSTheodore Ts'o 8829bffad1eSTheodore Ts'o TP_STRUCT__entry( 8830562e0baSJiaying Zhang __field( dev_t, dev ) 8849bffad1eSTheodore Ts'o __field( int, wait ) 8859bffad1eSTheodore Ts'o 8869bffad1eSTheodore Ts'o ), 8879bffad1eSTheodore Ts'o 8889bffad1eSTheodore Ts'o TP_fast_assign( 8890562e0baSJiaying Zhang __entry->dev = sb->s_dev; 8909bffad1eSTheodore Ts'o __entry->wait = wait; 8919bffad1eSTheodore Ts'o ), 8929bffad1eSTheodore Ts'o 8930562e0baSJiaying Zhang TP_printk("dev %d,%d wait %d", 8940562e0baSJiaying Zhang MAJOR(__entry->dev), MINOR(__entry->dev), 8950562e0baSJiaying Zhang __entry->wait) 8969bffad1eSTheodore Ts'o ); 8979bffad1eSTheodore Ts'o 898fb40ba0dSTheodore Ts'o TRACE_EVENT(ext4_alloc_da_blocks, 899fb40ba0dSTheodore Ts'o TP_PROTO(struct inode *inode), 900fb40ba0dSTheodore Ts'o 901fb40ba0dSTheodore Ts'o TP_ARGS(inode), 902fb40ba0dSTheodore Ts'o 903fb40ba0dSTheodore Ts'o TP_STRUCT__entry( 9040562e0baSJiaying Zhang __field( dev_t, dev ) 905fb40ba0dSTheodore Ts'o __field( ino_t, ino ) 906fb40ba0dSTheodore Ts'o __field( unsigned int, data_blocks ) 907fb40ba0dSTheodore Ts'o __field( unsigned int, meta_blocks ) 908fb40ba0dSTheodore Ts'o ), 909fb40ba0dSTheodore Ts'o 910fb40ba0dSTheodore Ts'o TP_fast_assign( 9110562e0baSJiaying Zhang __entry->dev = inode->i_sb->s_dev; 912fb40ba0dSTheodore Ts'o __entry->ino = inode->i_ino; 913fb40ba0dSTheodore Ts'o __entry->data_blocks = EXT4_I(inode)->i_reserved_data_blocks; 914fb40ba0dSTheodore Ts'o __entry->meta_blocks = EXT4_I(inode)->i_reserved_meta_blocks; 915fb40ba0dSTheodore Ts'o ), 916fb40ba0dSTheodore Ts'o 917a269029dSTheodore Ts'o TP_printk("dev %d,%d ino %lu data_blocks %u meta_blocks %u", 9180562e0baSJiaying Zhang MAJOR(__entry->dev), MINOR(__entry->dev), 919a269029dSTheodore Ts'o (unsigned long) __entry->ino, 920fb40ba0dSTheodore Ts'o __entry->data_blocks, __entry->meta_blocks) 921fb40ba0dSTheodore Ts'o ); 922fb40ba0dSTheodore Ts'o 923296c355cSTheodore Ts'o TRACE_EVENT(ext4_mballoc_alloc, 924296c355cSTheodore Ts'o TP_PROTO(struct ext4_allocation_context *ac), 925296c355cSTheodore Ts'o 926296c355cSTheodore Ts'o TP_ARGS(ac), 927296c355cSTheodore Ts'o 928296c355cSTheodore Ts'o TP_STRUCT__entry( 9290562e0baSJiaying Zhang __field( dev_t, dev ) 930296c355cSTheodore Ts'o __field( ino_t, ino ) 931296c355cSTheodore Ts'o __field( __u32, orig_logical ) 932296c355cSTheodore Ts'o __field( int, orig_start ) 933296c355cSTheodore Ts'o __field( __u32, orig_group ) 934296c355cSTheodore Ts'o __field( int, orig_len ) 935296c355cSTheodore Ts'o __field( __u32, goal_logical ) 936296c355cSTheodore Ts'o __field( int, goal_start ) 937296c355cSTheodore Ts'o __field( __u32, goal_group ) 938296c355cSTheodore Ts'o __field( int, goal_len ) 939296c355cSTheodore Ts'o __field( __u32, result_logical ) 940296c355cSTheodore Ts'o __field( int, result_start ) 941296c355cSTheodore Ts'o __field( __u32, result_group ) 942296c355cSTheodore Ts'o __field( int, result_len ) 943210c0526SAnatol Pomozov __field( __u16, found ) 944210c0526SAnatol Pomozov __field( __u16, groups ) 945210c0526SAnatol Pomozov __field( __u16, buddy ) 946210c0526SAnatol Pomozov __field( __u16, flags ) 947210c0526SAnatol Pomozov __field( __u16, tail ) 948210c0526SAnatol Pomozov __field( __u8, cr ) 949296c355cSTheodore Ts'o ), 950296c355cSTheodore Ts'o 951296c355cSTheodore Ts'o TP_fast_assign( 9520562e0baSJiaying Zhang __entry->dev = ac->ac_inode->i_sb->s_dev; 953296c355cSTheodore Ts'o __entry->ino = ac->ac_inode->i_ino; 954296c355cSTheodore Ts'o __entry->orig_logical = ac->ac_o_ex.fe_logical; 955296c355cSTheodore Ts'o __entry->orig_start = ac->ac_o_ex.fe_start; 956296c355cSTheodore Ts'o __entry->orig_group = ac->ac_o_ex.fe_group; 957296c355cSTheodore Ts'o __entry->orig_len = ac->ac_o_ex.fe_len; 958296c355cSTheodore Ts'o __entry->goal_logical = ac->ac_g_ex.fe_logical; 959296c355cSTheodore Ts'o __entry->goal_start = ac->ac_g_ex.fe_start; 960296c355cSTheodore Ts'o __entry->goal_group = ac->ac_g_ex.fe_group; 961296c355cSTheodore Ts'o __entry->goal_len = ac->ac_g_ex.fe_len; 962296c355cSTheodore Ts'o __entry->result_logical = ac->ac_f_ex.fe_logical; 963296c355cSTheodore Ts'o __entry->result_start = ac->ac_f_ex.fe_start; 964296c355cSTheodore Ts'o __entry->result_group = ac->ac_f_ex.fe_group; 965296c355cSTheodore Ts'o __entry->result_len = ac->ac_f_ex.fe_len; 966210c0526SAnatol Pomozov __entry->found = ac->ac_found; 967210c0526SAnatol Pomozov __entry->flags = ac->ac_flags; 968210c0526SAnatol Pomozov __entry->groups = ac->ac_groups_scanned; 969210c0526SAnatol Pomozov __entry->buddy = ac->ac_buddy; 970210c0526SAnatol Pomozov __entry->tail = ac->ac_tail; 971210c0526SAnatol Pomozov __entry->cr = ac->ac_criteria; 972296c355cSTheodore Ts'o ), 973296c355cSTheodore Ts'o 974a269029dSTheodore Ts'o TP_printk("dev %d,%d inode %lu orig %u/%d/%u@%u goal %u/%d/%u@%u " 97521ddd568STheodore Ts'o "result %u/%d/%u@%u blks %u grps %u cr %u flags %s " 976296c355cSTheodore Ts'o "tail %u broken %u", 9770562e0baSJiaying Zhang MAJOR(__entry->dev), MINOR(__entry->dev), 978a269029dSTheodore Ts'o (unsigned long) __entry->ino, 979296c355cSTheodore Ts'o __entry->orig_group, __entry->orig_start, 980296c355cSTheodore Ts'o __entry->orig_len, __entry->orig_logical, 981296c355cSTheodore Ts'o __entry->goal_group, __entry->goal_start, 982296c355cSTheodore Ts'o __entry->goal_len, __entry->goal_logical, 983296c355cSTheodore Ts'o __entry->result_group, __entry->result_start, 984296c355cSTheodore Ts'o __entry->result_len, __entry->result_logical, 985296c355cSTheodore Ts'o __entry->found, __entry->groups, __entry->cr, 98621ddd568STheodore Ts'o show_mballoc_flags(__entry->flags), __entry->tail, 987296c355cSTheodore Ts'o __entry->buddy ? 1 << __entry->buddy : 0) 988296c355cSTheodore Ts'o ); 989296c355cSTheodore Ts'o 990296c355cSTheodore Ts'o TRACE_EVENT(ext4_mballoc_prealloc, 991296c355cSTheodore Ts'o TP_PROTO(struct ext4_allocation_context *ac), 992296c355cSTheodore Ts'o 993296c355cSTheodore Ts'o TP_ARGS(ac), 994296c355cSTheodore Ts'o 995296c355cSTheodore Ts'o TP_STRUCT__entry( 9960562e0baSJiaying Zhang __field( dev_t, dev ) 997296c355cSTheodore Ts'o __field( ino_t, ino ) 998296c355cSTheodore Ts'o __field( __u32, orig_logical ) 999296c355cSTheodore Ts'o __field( int, orig_start ) 1000296c355cSTheodore Ts'o __field( __u32, orig_group ) 1001296c355cSTheodore Ts'o __field( int, orig_len ) 1002296c355cSTheodore Ts'o __field( __u32, result_logical ) 1003296c355cSTheodore Ts'o __field( int, result_start ) 1004296c355cSTheodore Ts'o __field( __u32, result_group ) 1005296c355cSTheodore Ts'o __field( int, result_len ) 1006296c355cSTheodore Ts'o ), 1007296c355cSTheodore Ts'o 1008296c355cSTheodore Ts'o TP_fast_assign( 10090562e0baSJiaying Zhang __entry->dev = ac->ac_inode->i_sb->s_dev; 1010296c355cSTheodore Ts'o __entry->ino = ac->ac_inode->i_ino; 1011296c355cSTheodore Ts'o __entry->orig_logical = ac->ac_o_ex.fe_logical; 1012296c355cSTheodore Ts'o __entry->orig_start = ac->ac_o_ex.fe_start; 1013296c355cSTheodore Ts'o __entry->orig_group = ac->ac_o_ex.fe_group; 1014296c355cSTheodore Ts'o __entry->orig_len = ac->ac_o_ex.fe_len; 1015296c355cSTheodore Ts'o __entry->result_logical = ac->ac_b_ex.fe_logical; 1016296c355cSTheodore Ts'o __entry->result_start = ac->ac_b_ex.fe_start; 1017296c355cSTheodore Ts'o __entry->result_group = ac->ac_b_ex.fe_group; 1018296c355cSTheodore Ts'o __entry->result_len = ac->ac_b_ex.fe_len; 1019296c355cSTheodore Ts'o ), 1020296c355cSTheodore Ts'o 1021a269029dSTheodore Ts'o TP_printk("dev %d,%d inode %lu orig %u/%d/%u@%u result %u/%d/%u@%u", 10220562e0baSJiaying Zhang MAJOR(__entry->dev), MINOR(__entry->dev), 1023a269029dSTheodore Ts'o (unsigned long) __entry->ino, 1024296c355cSTheodore Ts'o __entry->orig_group, __entry->orig_start, 1025296c355cSTheodore Ts'o __entry->orig_len, __entry->orig_logical, 1026296c355cSTheodore Ts'o __entry->result_group, __entry->result_start, 1027296c355cSTheodore Ts'o __entry->result_len, __entry->result_logical) 1028296c355cSTheodore Ts'o ); 1029296c355cSTheodore Ts'o 1030f084db93SLi Zefan DECLARE_EVENT_CLASS(ext4__mballoc, 10313e1e5f50SEric Sandeen TP_PROTO(struct super_block *sb, 10323e1e5f50SEric Sandeen struct inode *inode, 10333e1e5f50SEric Sandeen ext4_group_t group, 10343e1e5f50SEric Sandeen ext4_grpblk_t start, 10353e1e5f50SEric Sandeen ext4_grpblk_t len), 1036296c355cSTheodore Ts'o 10373e1e5f50SEric Sandeen TP_ARGS(sb, inode, group, start, len), 1038296c355cSTheodore Ts'o 1039296c355cSTheodore Ts'o TP_STRUCT__entry( 10400562e0baSJiaying Zhang __field( dev_t, dev ) 1041296c355cSTheodore Ts'o __field( ino_t, ino ) 1042296c355cSTheodore Ts'o __field( int, result_start ) 1043296c355cSTheodore Ts'o __field( __u32, result_group ) 1044296c355cSTheodore Ts'o __field( int, result_len ) 1045296c355cSTheodore Ts'o ), 1046296c355cSTheodore Ts'o 1047296c355cSTheodore Ts'o TP_fast_assign( 10480562e0baSJiaying Zhang __entry->dev = sb->s_dev; 10493e1e5f50SEric Sandeen __entry->ino = inode ? inode->i_ino : 0; 10503e1e5f50SEric Sandeen __entry->result_start = start; 10513e1e5f50SEric Sandeen __entry->result_group = group; 10523e1e5f50SEric Sandeen __entry->result_len = len; 1053296c355cSTheodore Ts'o ), 1054296c355cSTheodore Ts'o 1055a9c667f8SLukas Czerner TP_printk("dev %d,%d inode %lu extent %u/%d/%d ", 10560562e0baSJiaying Zhang MAJOR(__entry->dev), MINOR(__entry->dev), 1057a269029dSTheodore Ts'o (unsigned long) __entry->ino, 1058296c355cSTheodore Ts'o __entry->result_group, __entry->result_start, 10593e1e5f50SEric Sandeen __entry->result_len) 1060296c355cSTheodore Ts'o ); 1061296c355cSTheodore Ts'o 1062f084db93SLi Zefan DEFINE_EVENT(ext4__mballoc, ext4_mballoc_discard, 1063f084db93SLi Zefan 10643e1e5f50SEric Sandeen TP_PROTO(struct super_block *sb, 10653e1e5f50SEric Sandeen struct inode *inode, 10663e1e5f50SEric Sandeen ext4_group_t group, 10673e1e5f50SEric Sandeen ext4_grpblk_t start, 10683e1e5f50SEric Sandeen ext4_grpblk_t len), 1069296c355cSTheodore Ts'o 10703e1e5f50SEric Sandeen TP_ARGS(sb, inode, group, start, len) 1071f084db93SLi Zefan ); 1072296c355cSTheodore Ts'o 1073f084db93SLi Zefan DEFINE_EVENT(ext4__mballoc, ext4_mballoc_free, 1074296c355cSTheodore Ts'o 10753e1e5f50SEric Sandeen TP_PROTO(struct super_block *sb, 10763e1e5f50SEric Sandeen struct inode *inode, 10773e1e5f50SEric Sandeen ext4_group_t group, 10783e1e5f50SEric Sandeen ext4_grpblk_t start, 10793e1e5f50SEric Sandeen ext4_grpblk_t len), 1080296c355cSTheodore Ts'o 10813e1e5f50SEric Sandeen TP_ARGS(sb, inode, group, start, len) 1082296c355cSTheodore Ts'o ); 1083296c355cSTheodore Ts'o 1084beac2da7STheodore Ts'o TRACE_EVENT(ext4_forget, 1085beac2da7STheodore Ts'o TP_PROTO(struct inode *inode, int is_metadata, __u64 block), 1086beac2da7STheodore Ts'o 1087beac2da7STheodore Ts'o TP_ARGS(inode, is_metadata, block), 1088beac2da7STheodore Ts'o 1089beac2da7STheodore Ts'o TP_STRUCT__entry( 10900562e0baSJiaying Zhang __field( dev_t, dev ) 1091beac2da7STheodore Ts'o __field( ino_t, ino ) 1092beac2da7STheodore Ts'o __field( __u64, block ) 1093210c0526SAnatol Pomozov __field( int, is_metadata ) 1094210c0526SAnatol Pomozov __field( __u16, mode ) 1095beac2da7STheodore Ts'o ), 1096beac2da7STheodore Ts'o 1097beac2da7STheodore Ts'o TP_fast_assign( 10980562e0baSJiaying Zhang __entry->dev = inode->i_sb->s_dev; 1099beac2da7STheodore Ts'o __entry->ino = inode->i_ino; 1100beac2da7STheodore Ts'o __entry->block = block; 1101210c0526SAnatol Pomozov __entry->is_metadata = is_metadata; 1102210c0526SAnatol Pomozov __entry->mode = inode->i_mode; 1103beac2da7STheodore Ts'o ), 1104beac2da7STheodore Ts'o 1105a269029dSTheodore Ts'o TP_printk("dev %d,%d ino %lu mode 0%o is_metadata %d block %llu", 11060562e0baSJiaying Zhang MAJOR(__entry->dev), MINOR(__entry->dev), 11070562e0baSJiaying Zhang (unsigned long) __entry->ino, 11080562e0baSJiaying Zhang __entry->mode, __entry->is_metadata, __entry->block) 1109beac2da7STheodore Ts'o ); 1110beac2da7STheodore Ts'o 1111f8ec9d68STheodore Ts'o TRACE_EVENT(ext4_da_update_reserve_space, 1112d8990240SAditya Kali TP_PROTO(struct inode *inode, int used_blocks, int quota_claim), 1113f8ec9d68STheodore Ts'o 1114d8990240SAditya Kali TP_ARGS(inode, used_blocks, quota_claim), 1115f8ec9d68STheodore Ts'o 1116f8ec9d68STheodore Ts'o TP_STRUCT__entry( 11170562e0baSJiaying Zhang __field( dev_t, dev ) 1118f8ec9d68STheodore Ts'o __field( ino_t, ino ) 1119f8ec9d68STheodore Ts'o __field( __u64, i_blocks ) 1120f8ec9d68STheodore Ts'o __field( int, used_blocks ) 1121f8ec9d68STheodore Ts'o __field( int, reserved_data_blocks ) 1122f8ec9d68STheodore Ts'o __field( int, reserved_meta_blocks ) 1123f8ec9d68STheodore Ts'o __field( int, allocated_meta_blocks ) 1124d8990240SAditya Kali __field( int, quota_claim ) 1125210c0526SAnatol Pomozov __field( __u16, mode ) 1126f8ec9d68STheodore Ts'o ), 1127f8ec9d68STheodore Ts'o 1128f8ec9d68STheodore Ts'o TP_fast_assign( 11290562e0baSJiaying Zhang __entry->dev = inode->i_sb->s_dev; 1130f8ec9d68STheodore Ts'o __entry->ino = inode->i_ino; 1131f8ec9d68STheodore Ts'o __entry->i_blocks = inode->i_blocks; 1132f8ec9d68STheodore Ts'o __entry->used_blocks = used_blocks; 1133d8990240SAditya Kali __entry->reserved_data_blocks = 1134d8990240SAditya Kali EXT4_I(inode)->i_reserved_data_blocks; 1135d8990240SAditya Kali __entry->reserved_meta_blocks = 1136d8990240SAditya Kali EXT4_I(inode)->i_reserved_meta_blocks; 1137d8990240SAditya Kali __entry->allocated_meta_blocks = 1138d8990240SAditya Kali EXT4_I(inode)->i_allocated_meta_blocks; 1139d8990240SAditya Kali __entry->quota_claim = quota_claim; 1140210c0526SAnatol Pomozov __entry->mode = inode->i_mode; 1141f8ec9d68STheodore Ts'o ), 1142f8ec9d68STheodore Ts'o 11430562e0baSJiaying Zhang TP_printk("dev %d,%d ino %lu mode 0%o i_blocks %llu used_blocks %d " 11440562e0baSJiaying Zhang "reserved_data_blocks %d reserved_meta_blocks %d " 1145d8990240SAditya Kali "allocated_meta_blocks %d quota_claim %d", 11460562e0baSJiaying Zhang MAJOR(__entry->dev), MINOR(__entry->dev), 11470562e0baSJiaying Zhang (unsigned long) __entry->ino, 1148a9c667f8SLukas Czerner __entry->mode, __entry->i_blocks, 1149f8ec9d68STheodore Ts'o __entry->used_blocks, __entry->reserved_data_blocks, 1150d8990240SAditya Kali __entry->reserved_meta_blocks, __entry->allocated_meta_blocks, 1151d8990240SAditya Kali __entry->quota_claim) 1152f8ec9d68STheodore Ts'o ); 1153f8ec9d68STheodore Ts'o 1154f8ec9d68STheodore Ts'o TRACE_EVENT(ext4_da_reserve_space, 1155f8ec9d68STheodore Ts'o TP_PROTO(struct inode *inode, int md_needed), 1156f8ec9d68STheodore Ts'o 1157f8ec9d68STheodore Ts'o TP_ARGS(inode, md_needed), 1158f8ec9d68STheodore Ts'o 1159f8ec9d68STheodore Ts'o TP_STRUCT__entry( 11600562e0baSJiaying Zhang __field( dev_t, dev ) 1161f8ec9d68STheodore Ts'o __field( ino_t, ino ) 1162f8ec9d68STheodore Ts'o __field( __u64, i_blocks ) 1163f8ec9d68STheodore Ts'o __field( int, md_needed ) 1164f8ec9d68STheodore Ts'o __field( int, reserved_data_blocks ) 1165f8ec9d68STheodore Ts'o __field( int, reserved_meta_blocks ) 1166210c0526SAnatol Pomozov __field( __u16, mode ) 1167f8ec9d68STheodore Ts'o ), 1168f8ec9d68STheodore Ts'o 1169f8ec9d68STheodore Ts'o TP_fast_assign( 11700562e0baSJiaying Zhang __entry->dev = inode->i_sb->s_dev; 1171f8ec9d68STheodore Ts'o __entry->ino = inode->i_ino; 1172f8ec9d68STheodore Ts'o __entry->i_blocks = inode->i_blocks; 1173f8ec9d68STheodore Ts'o __entry->md_needed = md_needed; 1174f8ec9d68STheodore Ts'o __entry->reserved_data_blocks = EXT4_I(inode)->i_reserved_data_blocks; 1175f8ec9d68STheodore Ts'o __entry->reserved_meta_blocks = EXT4_I(inode)->i_reserved_meta_blocks; 1176210c0526SAnatol Pomozov __entry->mode = inode->i_mode; 1177f8ec9d68STheodore Ts'o ), 1178f8ec9d68STheodore Ts'o 11790562e0baSJiaying Zhang TP_printk("dev %d,%d ino %lu mode 0%o i_blocks %llu md_needed %d " 11800562e0baSJiaying Zhang "reserved_data_blocks %d reserved_meta_blocks %d", 11810562e0baSJiaying Zhang MAJOR(__entry->dev), MINOR(__entry->dev), 1182a269029dSTheodore Ts'o (unsigned long) __entry->ino, 1183a9c667f8SLukas Czerner __entry->mode, __entry->i_blocks, 1184f8ec9d68STheodore Ts'o __entry->md_needed, __entry->reserved_data_blocks, 1185f8ec9d68STheodore Ts'o __entry->reserved_meta_blocks) 1186f8ec9d68STheodore Ts'o ); 1187f8ec9d68STheodore Ts'o 1188f8ec9d68STheodore Ts'o TRACE_EVENT(ext4_da_release_space, 1189f8ec9d68STheodore Ts'o TP_PROTO(struct inode *inode, int freed_blocks), 1190f8ec9d68STheodore Ts'o 1191f8ec9d68STheodore Ts'o TP_ARGS(inode, freed_blocks), 1192f8ec9d68STheodore Ts'o 1193f8ec9d68STheodore Ts'o TP_STRUCT__entry( 11940562e0baSJiaying Zhang __field( dev_t, dev ) 1195f8ec9d68STheodore Ts'o __field( ino_t, ino ) 1196f8ec9d68STheodore Ts'o __field( __u64, i_blocks ) 1197f8ec9d68STheodore Ts'o __field( int, freed_blocks ) 1198f8ec9d68STheodore Ts'o __field( int, reserved_data_blocks ) 1199f8ec9d68STheodore Ts'o __field( int, reserved_meta_blocks ) 1200f8ec9d68STheodore Ts'o __field( int, allocated_meta_blocks ) 1201210c0526SAnatol Pomozov __field( __u16, mode ) 1202f8ec9d68STheodore Ts'o ), 1203f8ec9d68STheodore Ts'o 1204f8ec9d68STheodore Ts'o TP_fast_assign( 12050562e0baSJiaying Zhang __entry->dev = inode->i_sb->s_dev; 1206f8ec9d68STheodore Ts'o __entry->ino = inode->i_ino; 1207f8ec9d68STheodore Ts'o __entry->i_blocks = inode->i_blocks; 1208f8ec9d68STheodore Ts'o __entry->freed_blocks = freed_blocks; 1209f8ec9d68STheodore Ts'o __entry->reserved_data_blocks = EXT4_I(inode)->i_reserved_data_blocks; 1210f8ec9d68STheodore Ts'o __entry->reserved_meta_blocks = EXT4_I(inode)->i_reserved_meta_blocks; 1211f8ec9d68STheodore Ts'o __entry->allocated_meta_blocks = EXT4_I(inode)->i_allocated_meta_blocks; 1212210c0526SAnatol Pomozov __entry->mode = inode->i_mode; 1213f8ec9d68STheodore Ts'o ), 1214f8ec9d68STheodore Ts'o 12150562e0baSJiaying Zhang TP_printk("dev %d,%d ino %lu mode 0%o i_blocks %llu freed_blocks %d " 12160562e0baSJiaying Zhang "reserved_data_blocks %d reserved_meta_blocks %d " 12170562e0baSJiaying Zhang "allocated_meta_blocks %d", 12180562e0baSJiaying Zhang MAJOR(__entry->dev), MINOR(__entry->dev), 1219a269029dSTheodore Ts'o (unsigned long) __entry->ino, 1220a9c667f8SLukas Czerner __entry->mode, __entry->i_blocks, 1221f8ec9d68STheodore Ts'o __entry->freed_blocks, __entry->reserved_data_blocks, 1222f8ec9d68STheodore Ts'o __entry->reserved_meta_blocks, __entry->allocated_meta_blocks) 1223f8ec9d68STheodore Ts'o ); 1224f8ec9d68STheodore Ts'o 1225f307333eSTheodore Ts'o DECLARE_EVENT_CLASS(ext4__bitmap_load, 1226f307333eSTheodore Ts'o TP_PROTO(struct super_block *sb, unsigned long group), 1227f307333eSTheodore Ts'o 1228f307333eSTheodore Ts'o TP_ARGS(sb, group), 1229f307333eSTheodore Ts'o 1230f307333eSTheodore Ts'o TP_STRUCT__entry( 12310562e0baSJiaying Zhang __field( dev_t, dev ) 1232f307333eSTheodore Ts'o __field( __u32, group ) 1233f307333eSTheodore Ts'o 1234f307333eSTheodore Ts'o ), 1235f307333eSTheodore Ts'o 1236f307333eSTheodore Ts'o TP_fast_assign( 12370562e0baSJiaying Zhang __entry->dev = sb->s_dev; 1238f307333eSTheodore Ts'o __entry->group = group; 1239f307333eSTheodore Ts'o ), 1240f307333eSTheodore Ts'o 1241a269029dSTheodore Ts'o TP_printk("dev %d,%d group %u", 12420562e0baSJiaying Zhang MAJOR(__entry->dev), MINOR(__entry->dev), 12430562e0baSJiaying Zhang __entry->group) 1244f307333eSTheodore Ts'o ); 1245f307333eSTheodore Ts'o 1246f307333eSTheodore Ts'o DEFINE_EVENT(ext4__bitmap_load, ext4_mb_bitmap_load, 1247f307333eSTheodore Ts'o 1248f307333eSTheodore Ts'o TP_PROTO(struct super_block *sb, unsigned long group), 1249f307333eSTheodore Ts'o 1250f307333eSTheodore Ts'o TP_ARGS(sb, group) 1251f307333eSTheodore Ts'o ); 1252f307333eSTheodore Ts'o 1253f307333eSTheodore Ts'o DEFINE_EVENT(ext4__bitmap_load, ext4_mb_buddy_bitmap_load, 1254f307333eSTheodore Ts'o 1255f307333eSTheodore Ts'o TP_PROTO(struct super_block *sb, unsigned long group), 1256f307333eSTheodore Ts'o 1257f307333eSTheodore Ts'o TP_ARGS(sb, group) 1258f307333eSTheodore Ts'o ); 1259f8ec9d68STheodore Ts'o 12600562e0baSJiaying Zhang DEFINE_EVENT(ext4__bitmap_load, ext4_read_block_bitmap_load, 12610562e0baSJiaying Zhang 12620562e0baSJiaying Zhang TP_PROTO(struct super_block *sb, unsigned long group), 12630562e0baSJiaying Zhang 12640562e0baSJiaying Zhang TP_ARGS(sb, group) 12650562e0baSJiaying Zhang ); 12660562e0baSJiaying Zhang 12670562e0baSJiaying Zhang DEFINE_EVENT(ext4__bitmap_load, ext4_load_inode_bitmap, 12680562e0baSJiaying Zhang 12690562e0baSJiaying Zhang TP_PROTO(struct super_block *sb, unsigned long group), 12700562e0baSJiaying Zhang 12710562e0baSJiaying Zhang TP_ARGS(sb, group) 12720562e0baSJiaying Zhang ); 12730562e0baSJiaying Zhang 12740562e0baSJiaying Zhang TRACE_EVENT(ext4_direct_IO_enter, 12750562e0baSJiaying Zhang TP_PROTO(struct inode *inode, loff_t offset, unsigned long len, int rw), 12760562e0baSJiaying Zhang 12770562e0baSJiaying Zhang TP_ARGS(inode, offset, len, rw), 12780562e0baSJiaying Zhang 12790562e0baSJiaying Zhang TP_STRUCT__entry( 12800562e0baSJiaying Zhang __field( dev_t, dev ) 1281210c0526SAnatol Pomozov __field( ino_t, ino ) 12820562e0baSJiaying Zhang __field( loff_t, pos ) 12830562e0baSJiaying Zhang __field( unsigned long, len ) 12840562e0baSJiaying Zhang __field( int, rw ) 12850562e0baSJiaying Zhang ), 12860562e0baSJiaying Zhang 12870562e0baSJiaying Zhang TP_fast_assign( 12880562e0baSJiaying Zhang __entry->dev = inode->i_sb->s_dev; 1289210c0526SAnatol Pomozov __entry->ino = inode->i_ino; 12900562e0baSJiaying Zhang __entry->pos = offset; 12910562e0baSJiaying Zhang __entry->len = len; 12920562e0baSJiaying Zhang __entry->rw = rw; 12930562e0baSJiaying Zhang ), 12940562e0baSJiaying Zhang 1295a9c667f8SLukas Czerner TP_printk("dev %d,%d ino %lu pos %lld len %lu rw %d", 12960562e0baSJiaying Zhang MAJOR(__entry->dev), MINOR(__entry->dev), 12970562e0baSJiaying Zhang (unsigned long) __entry->ino, 1298a9c667f8SLukas Czerner __entry->pos, __entry->len, __entry->rw) 12990562e0baSJiaying Zhang ); 13000562e0baSJiaying Zhang 13010562e0baSJiaying Zhang TRACE_EVENT(ext4_direct_IO_exit, 1302a9c667f8SLukas Czerner TP_PROTO(struct inode *inode, loff_t offset, unsigned long len, 1303a9c667f8SLukas Czerner int rw, int ret), 13040562e0baSJiaying Zhang 13050562e0baSJiaying Zhang TP_ARGS(inode, offset, len, rw, ret), 13060562e0baSJiaying Zhang 13070562e0baSJiaying Zhang TP_STRUCT__entry( 13080562e0baSJiaying Zhang __field( dev_t, dev ) 1309210c0526SAnatol Pomozov __field( ino_t, ino ) 13100562e0baSJiaying Zhang __field( loff_t, pos ) 13110562e0baSJiaying Zhang __field( unsigned long, len ) 13120562e0baSJiaying Zhang __field( int, rw ) 13130562e0baSJiaying Zhang __field( int, ret ) 13140562e0baSJiaying Zhang ), 13150562e0baSJiaying Zhang 13160562e0baSJiaying Zhang TP_fast_assign( 13170562e0baSJiaying Zhang __entry->dev = inode->i_sb->s_dev; 1318210c0526SAnatol Pomozov __entry->ino = inode->i_ino; 13190562e0baSJiaying Zhang __entry->pos = offset; 13200562e0baSJiaying Zhang __entry->len = len; 13210562e0baSJiaying Zhang __entry->rw = rw; 13220562e0baSJiaying Zhang __entry->ret = ret; 13230562e0baSJiaying Zhang ), 13240562e0baSJiaying Zhang 1325a9c667f8SLukas Czerner TP_printk("dev %d,%d ino %lu pos %lld len %lu rw %d ret %d", 13260562e0baSJiaying Zhang MAJOR(__entry->dev), MINOR(__entry->dev), 13270562e0baSJiaying Zhang (unsigned long) __entry->ino, 1328a9c667f8SLukas Czerner __entry->pos, __entry->len, 13290562e0baSJiaying Zhang __entry->rw, __entry->ret) 13300562e0baSJiaying Zhang ); 13310562e0baSJiaying Zhang 13320562e0baSJiaying Zhang TRACE_EVENT(ext4_fallocate_enter, 13330562e0baSJiaying Zhang TP_PROTO(struct inode *inode, loff_t offset, loff_t len, int mode), 13340562e0baSJiaying Zhang 13350562e0baSJiaying Zhang TP_ARGS(inode, offset, len, mode), 13360562e0baSJiaying Zhang 13370562e0baSJiaying Zhang TP_STRUCT__entry( 13380562e0baSJiaying Zhang __field( dev_t, dev ) 1339210c0526SAnatol Pomozov __field( ino_t, ino ) 13400562e0baSJiaying Zhang __field( loff_t, pos ) 13410562e0baSJiaying Zhang __field( loff_t, len ) 13420562e0baSJiaying Zhang __field( int, mode ) 13430562e0baSJiaying Zhang ), 13440562e0baSJiaying Zhang 13450562e0baSJiaying Zhang TP_fast_assign( 13460562e0baSJiaying Zhang __entry->dev = inode->i_sb->s_dev; 1347210c0526SAnatol Pomozov __entry->ino = inode->i_ino; 13480562e0baSJiaying Zhang __entry->pos = offset; 13490562e0baSJiaying Zhang __entry->len = len; 13500562e0baSJiaying Zhang __entry->mode = mode; 13510562e0baSJiaying Zhang ), 13520562e0baSJiaying Zhang 1353a9c667f8SLukas Czerner TP_printk("dev %d,%d ino %lu pos %lld len %lld mode %d", 13540562e0baSJiaying Zhang MAJOR(__entry->dev), MINOR(__entry->dev), 1355a9c667f8SLukas Czerner (unsigned long) __entry->ino, __entry->pos, 1356a9c667f8SLukas Czerner __entry->len, __entry->mode) 13570562e0baSJiaying Zhang ); 13580562e0baSJiaying Zhang 13590562e0baSJiaying Zhang TRACE_EVENT(ext4_fallocate_exit, 1360a9c667f8SLukas Czerner TP_PROTO(struct inode *inode, loff_t offset, 1361a9c667f8SLukas Czerner unsigned int max_blocks, int ret), 13620562e0baSJiaying Zhang 13630562e0baSJiaying Zhang TP_ARGS(inode, offset, max_blocks, ret), 13640562e0baSJiaying Zhang 13650562e0baSJiaying Zhang TP_STRUCT__entry( 13660562e0baSJiaying Zhang __field( dev_t, dev ) 1367210c0526SAnatol Pomozov __field( ino_t, ino ) 13680562e0baSJiaying Zhang __field( loff_t, pos ) 1369a9c667f8SLukas Czerner __field( unsigned int, blocks ) 13700562e0baSJiaying Zhang __field( int, ret ) 13710562e0baSJiaying Zhang ), 13720562e0baSJiaying Zhang 13730562e0baSJiaying Zhang TP_fast_assign( 13740562e0baSJiaying Zhang __entry->dev = inode->i_sb->s_dev; 1375210c0526SAnatol Pomozov __entry->ino = inode->i_ino; 13760562e0baSJiaying Zhang __entry->pos = offset; 13770562e0baSJiaying Zhang __entry->blocks = max_blocks; 13780562e0baSJiaying Zhang __entry->ret = ret; 13790562e0baSJiaying Zhang ), 13800562e0baSJiaying Zhang 1381a9c667f8SLukas Czerner TP_printk("dev %d,%d ino %lu pos %lld blocks %u ret %d", 13820562e0baSJiaying Zhang MAJOR(__entry->dev), MINOR(__entry->dev), 13830562e0baSJiaying Zhang (unsigned long) __entry->ino, 1384a9c667f8SLukas Czerner __entry->pos, __entry->blocks, 13850562e0baSJiaying Zhang __entry->ret) 13860562e0baSJiaying Zhang ); 13870562e0baSJiaying Zhang 1388aaddea81SZheng Liu TRACE_EVENT(ext4_punch_hole, 1389aaddea81SZheng Liu TP_PROTO(struct inode *inode, loff_t offset, loff_t len), 1390aaddea81SZheng Liu 1391aaddea81SZheng Liu TP_ARGS(inode, offset, len), 1392aaddea81SZheng Liu 1393aaddea81SZheng Liu TP_STRUCT__entry( 1394aaddea81SZheng Liu __field( dev_t, dev ) 1395aaddea81SZheng Liu __field( ino_t, ino ) 1396aaddea81SZheng Liu __field( loff_t, offset ) 1397aaddea81SZheng Liu __field( loff_t, len ) 1398aaddea81SZheng Liu ), 1399aaddea81SZheng Liu 1400aaddea81SZheng Liu TP_fast_assign( 1401aaddea81SZheng Liu __entry->dev = inode->i_sb->s_dev; 1402aaddea81SZheng Liu __entry->ino = inode->i_ino; 1403aaddea81SZheng Liu __entry->offset = offset; 1404aaddea81SZheng Liu __entry->len = len; 1405aaddea81SZheng Liu ), 1406aaddea81SZheng Liu 1407aaddea81SZheng Liu TP_printk("dev %d,%d ino %lu offset %lld len %lld", 1408aaddea81SZheng Liu MAJOR(__entry->dev), MINOR(__entry->dev), 1409aaddea81SZheng Liu (unsigned long) __entry->ino, 1410aaddea81SZheng Liu __entry->offset, __entry->len) 1411aaddea81SZheng Liu ); 1412aaddea81SZheng Liu 14130562e0baSJiaying Zhang TRACE_EVENT(ext4_unlink_enter, 14140562e0baSJiaying Zhang TP_PROTO(struct inode *parent, struct dentry *dentry), 14150562e0baSJiaying Zhang 14160562e0baSJiaying Zhang TP_ARGS(parent, dentry), 14170562e0baSJiaying Zhang 14180562e0baSJiaying Zhang TP_STRUCT__entry( 14190562e0baSJiaying Zhang __field( dev_t, dev ) 1420210c0526SAnatol Pomozov __field( ino_t, ino ) 1421210c0526SAnatol Pomozov __field( ino_t, parent ) 1422210c0526SAnatol Pomozov __field( loff_t, size ) 14230562e0baSJiaying Zhang ), 14240562e0baSJiaying Zhang 14250562e0baSJiaying Zhang TP_fast_assign( 14260562e0baSJiaying Zhang __entry->dev = dentry->d_inode->i_sb->s_dev; 1427210c0526SAnatol Pomozov __entry->ino = dentry->d_inode->i_ino; 1428210c0526SAnatol Pomozov __entry->parent = parent->i_ino; 1429210c0526SAnatol Pomozov __entry->size = dentry->d_inode->i_size; 14300562e0baSJiaying Zhang ), 14310562e0baSJiaying Zhang 1432a9c667f8SLukas Czerner TP_printk("dev %d,%d ino %lu size %lld parent %lu", 14330562e0baSJiaying Zhang MAJOR(__entry->dev), MINOR(__entry->dev), 14340562e0baSJiaying Zhang (unsigned long) __entry->ino, __entry->size, 14350562e0baSJiaying Zhang (unsigned long) __entry->parent) 14360562e0baSJiaying Zhang ); 14370562e0baSJiaying Zhang 14380562e0baSJiaying Zhang TRACE_EVENT(ext4_unlink_exit, 14390562e0baSJiaying Zhang TP_PROTO(struct dentry *dentry, int ret), 14400562e0baSJiaying Zhang 14410562e0baSJiaying Zhang TP_ARGS(dentry, ret), 14420562e0baSJiaying Zhang 14430562e0baSJiaying Zhang TP_STRUCT__entry( 14440562e0baSJiaying Zhang __field( dev_t, dev ) 1445210c0526SAnatol Pomozov __field( ino_t, ino ) 14460562e0baSJiaying Zhang __field( int, ret ) 14470562e0baSJiaying Zhang ), 14480562e0baSJiaying Zhang 14490562e0baSJiaying Zhang TP_fast_assign( 14500562e0baSJiaying Zhang __entry->dev = dentry->d_inode->i_sb->s_dev; 1451210c0526SAnatol Pomozov __entry->ino = dentry->d_inode->i_ino; 14520562e0baSJiaying Zhang __entry->ret = ret; 14530562e0baSJiaying Zhang ), 14540562e0baSJiaying Zhang 1455a9c667f8SLukas Czerner TP_printk("dev %d,%d ino %lu ret %d", 14560562e0baSJiaying Zhang MAJOR(__entry->dev), MINOR(__entry->dev), 14570562e0baSJiaying Zhang (unsigned long) __entry->ino, 14580562e0baSJiaying Zhang __entry->ret) 14590562e0baSJiaying Zhang ); 14600562e0baSJiaying Zhang 14610562e0baSJiaying Zhang DECLARE_EVENT_CLASS(ext4__truncate, 14620562e0baSJiaying Zhang TP_PROTO(struct inode *inode), 14630562e0baSJiaying Zhang 14640562e0baSJiaying Zhang TP_ARGS(inode), 14650562e0baSJiaying Zhang 14660562e0baSJiaying Zhang TP_STRUCT__entry( 14670562e0baSJiaying Zhang __field( dev_t, dev ) 1468210c0526SAnatol Pomozov __field( ino_t, ino ) 1469a9c667f8SLukas Czerner __field( __u64, blocks ) 14700562e0baSJiaying Zhang ), 14710562e0baSJiaying Zhang 14720562e0baSJiaying Zhang TP_fast_assign( 14730562e0baSJiaying Zhang __entry->dev = inode->i_sb->s_dev; 1474210c0526SAnatol Pomozov __entry->ino = inode->i_ino; 14750562e0baSJiaying Zhang __entry->blocks = inode->i_blocks; 14760562e0baSJiaying Zhang ), 14770562e0baSJiaying Zhang 1478a9c667f8SLukas Czerner TP_printk("dev %d,%d ino %lu blocks %llu", 14790562e0baSJiaying Zhang MAJOR(__entry->dev), MINOR(__entry->dev), 1480a9c667f8SLukas Czerner (unsigned long) __entry->ino, __entry->blocks) 14810562e0baSJiaying Zhang ); 14820562e0baSJiaying Zhang 14830562e0baSJiaying Zhang DEFINE_EVENT(ext4__truncate, ext4_truncate_enter, 14840562e0baSJiaying Zhang 14850562e0baSJiaying Zhang TP_PROTO(struct inode *inode), 14860562e0baSJiaying Zhang 14870562e0baSJiaying Zhang TP_ARGS(inode) 14880562e0baSJiaying Zhang ); 14890562e0baSJiaying Zhang 14900562e0baSJiaying Zhang DEFINE_EVENT(ext4__truncate, ext4_truncate_exit, 14910562e0baSJiaying Zhang 14920562e0baSJiaying Zhang TP_PROTO(struct inode *inode), 14930562e0baSJiaying Zhang 14940562e0baSJiaying Zhang TP_ARGS(inode) 14950562e0baSJiaying Zhang ); 14960562e0baSJiaying Zhang 14976f91bc5fSEric Gouriou /* 'ux' is the uninitialized extent. */ 14986f91bc5fSEric Gouriou TRACE_EVENT(ext4_ext_convert_to_initialized_enter, 14996f91bc5fSEric Gouriou TP_PROTO(struct inode *inode, struct ext4_map_blocks *map, 15006f91bc5fSEric Gouriou struct ext4_extent *ux), 15016f91bc5fSEric Gouriou 15026f91bc5fSEric Gouriou TP_ARGS(inode, map, ux), 15036f91bc5fSEric Gouriou 15046f91bc5fSEric Gouriou TP_STRUCT__entry( 15056f91bc5fSEric Gouriou __field( dev_t, dev ) 1506210c0526SAnatol Pomozov __field( ino_t, ino ) 15076f91bc5fSEric Gouriou __field( ext4_lblk_t, m_lblk ) 15086f91bc5fSEric Gouriou __field( unsigned, m_len ) 15096f91bc5fSEric Gouriou __field( ext4_lblk_t, u_lblk ) 15106f91bc5fSEric Gouriou __field( unsigned, u_len ) 15116f91bc5fSEric Gouriou __field( ext4_fsblk_t, u_pblk ) 15126f91bc5fSEric Gouriou ), 15136f91bc5fSEric Gouriou 15146f91bc5fSEric Gouriou TP_fast_assign( 15156f91bc5fSEric Gouriou __entry->dev = inode->i_sb->s_dev; 1516210c0526SAnatol Pomozov __entry->ino = inode->i_ino; 15176f91bc5fSEric Gouriou __entry->m_lblk = map->m_lblk; 15186f91bc5fSEric Gouriou __entry->m_len = map->m_len; 15196f91bc5fSEric Gouriou __entry->u_lblk = le32_to_cpu(ux->ee_block); 15206f91bc5fSEric Gouriou __entry->u_len = ext4_ext_get_actual_len(ux); 15216f91bc5fSEric Gouriou __entry->u_pblk = ext4_ext_pblock(ux); 15226f91bc5fSEric Gouriou ), 15236f91bc5fSEric Gouriou 15246f91bc5fSEric Gouriou TP_printk("dev %d,%d ino %lu m_lblk %u m_len %u u_lblk %u u_len %u " 15256f91bc5fSEric Gouriou "u_pblk %llu", 15266f91bc5fSEric Gouriou MAJOR(__entry->dev), MINOR(__entry->dev), 15276f91bc5fSEric Gouriou (unsigned long) __entry->ino, 15286f91bc5fSEric Gouriou __entry->m_lblk, __entry->m_len, 15296f91bc5fSEric Gouriou __entry->u_lblk, __entry->u_len, __entry->u_pblk) 15306f91bc5fSEric Gouriou ); 15316f91bc5fSEric Gouriou 15326f91bc5fSEric Gouriou /* 15336f91bc5fSEric Gouriou * 'ux' is the uninitialized extent. 15346f91bc5fSEric Gouriou * 'ix' is the initialized extent to which blocks are transferred. 15356f91bc5fSEric Gouriou */ 15366f91bc5fSEric Gouriou TRACE_EVENT(ext4_ext_convert_to_initialized_fastpath, 15376f91bc5fSEric Gouriou TP_PROTO(struct inode *inode, struct ext4_map_blocks *map, 15386f91bc5fSEric Gouriou struct ext4_extent *ux, struct ext4_extent *ix), 15396f91bc5fSEric Gouriou 15406f91bc5fSEric Gouriou TP_ARGS(inode, map, ux, ix), 15416f91bc5fSEric Gouriou 15426f91bc5fSEric Gouriou TP_STRUCT__entry( 15436f91bc5fSEric Gouriou __field( dev_t, dev ) 1544210c0526SAnatol Pomozov __field( ino_t, ino ) 15456f91bc5fSEric Gouriou __field( ext4_lblk_t, m_lblk ) 15466f91bc5fSEric Gouriou __field( unsigned, m_len ) 15476f91bc5fSEric Gouriou __field( ext4_lblk_t, u_lblk ) 15486f91bc5fSEric Gouriou __field( unsigned, u_len ) 15496f91bc5fSEric Gouriou __field( ext4_fsblk_t, u_pblk ) 15506f91bc5fSEric Gouriou __field( ext4_lblk_t, i_lblk ) 15516f91bc5fSEric Gouriou __field( unsigned, i_len ) 15526f91bc5fSEric Gouriou __field( ext4_fsblk_t, i_pblk ) 15536f91bc5fSEric Gouriou ), 15546f91bc5fSEric Gouriou 15556f91bc5fSEric Gouriou TP_fast_assign( 15566f91bc5fSEric Gouriou __entry->dev = inode->i_sb->s_dev; 1557210c0526SAnatol Pomozov __entry->ino = inode->i_ino; 15586f91bc5fSEric Gouriou __entry->m_lblk = map->m_lblk; 15596f91bc5fSEric Gouriou __entry->m_len = map->m_len; 15606f91bc5fSEric Gouriou __entry->u_lblk = le32_to_cpu(ux->ee_block); 15616f91bc5fSEric Gouriou __entry->u_len = ext4_ext_get_actual_len(ux); 15626f91bc5fSEric Gouriou __entry->u_pblk = ext4_ext_pblock(ux); 15636f91bc5fSEric Gouriou __entry->i_lblk = le32_to_cpu(ix->ee_block); 15646f91bc5fSEric Gouriou __entry->i_len = ext4_ext_get_actual_len(ix); 15656f91bc5fSEric Gouriou __entry->i_pblk = ext4_ext_pblock(ix); 15666f91bc5fSEric Gouriou ), 15676f91bc5fSEric Gouriou 15686f91bc5fSEric Gouriou TP_printk("dev %d,%d ino %lu m_lblk %u m_len %u " 15696f91bc5fSEric Gouriou "u_lblk %u u_len %u u_pblk %llu " 15706f91bc5fSEric Gouriou "i_lblk %u i_len %u i_pblk %llu ", 15716f91bc5fSEric Gouriou MAJOR(__entry->dev), MINOR(__entry->dev), 15726f91bc5fSEric Gouriou (unsigned long) __entry->ino, 15736f91bc5fSEric Gouriou __entry->m_lblk, __entry->m_len, 15746f91bc5fSEric Gouriou __entry->u_lblk, __entry->u_len, __entry->u_pblk, 15756f91bc5fSEric Gouriou __entry->i_lblk, __entry->i_len, __entry->i_pblk) 15766f91bc5fSEric Gouriou ); 15776f91bc5fSEric Gouriou 15780562e0baSJiaying Zhang DECLARE_EVENT_CLASS(ext4__map_blocks_enter, 15790562e0baSJiaying Zhang TP_PROTO(struct inode *inode, ext4_lblk_t lblk, 1580a9c667f8SLukas Czerner unsigned int len, unsigned int flags), 15810562e0baSJiaying Zhang 15820562e0baSJiaying Zhang TP_ARGS(inode, lblk, len, flags), 15830562e0baSJiaying Zhang 15840562e0baSJiaying Zhang TP_STRUCT__entry( 15850562e0baSJiaying Zhang __field( dev_t, dev ) 1586210c0526SAnatol Pomozov __field( ino_t, ino ) 15870562e0baSJiaying Zhang __field( ext4_lblk_t, lblk ) 1588a9c667f8SLukas Czerner __field( unsigned int, len ) 1589a9c667f8SLukas Czerner __field( unsigned int, flags ) 15900562e0baSJiaying Zhang ), 15910562e0baSJiaying Zhang 15920562e0baSJiaying Zhang TP_fast_assign( 15930562e0baSJiaying Zhang __entry->dev = inode->i_sb->s_dev; 1594210c0526SAnatol Pomozov __entry->ino = inode->i_ino; 15950562e0baSJiaying Zhang __entry->lblk = lblk; 15960562e0baSJiaying Zhang __entry->len = len; 15970562e0baSJiaying Zhang __entry->flags = flags; 15980562e0baSJiaying Zhang ), 15990562e0baSJiaying Zhang 160021ddd568STheodore Ts'o TP_printk("dev %d,%d ino %lu lblk %u len %u flags %s", 16010562e0baSJiaying Zhang MAJOR(__entry->dev), MINOR(__entry->dev), 16020562e0baSJiaying Zhang (unsigned long) __entry->ino, 160321ddd568STheodore Ts'o __entry->lblk, __entry->len, show_map_flags(__entry->flags)) 16040562e0baSJiaying Zhang ); 16050562e0baSJiaying Zhang 16060562e0baSJiaying Zhang DEFINE_EVENT(ext4__map_blocks_enter, ext4_ext_map_blocks_enter, 16070562e0baSJiaying Zhang TP_PROTO(struct inode *inode, ext4_lblk_t lblk, 16080562e0baSJiaying Zhang unsigned len, unsigned flags), 16090562e0baSJiaying Zhang 16100562e0baSJiaying Zhang TP_ARGS(inode, lblk, len, flags) 16110562e0baSJiaying Zhang ); 16120562e0baSJiaying Zhang 16130562e0baSJiaying Zhang DEFINE_EVENT(ext4__map_blocks_enter, ext4_ind_map_blocks_enter, 16140562e0baSJiaying Zhang TP_PROTO(struct inode *inode, ext4_lblk_t lblk, 16150562e0baSJiaying Zhang unsigned len, unsigned flags), 16160562e0baSJiaying Zhang 16170562e0baSJiaying Zhang TP_ARGS(inode, lblk, len, flags) 16180562e0baSJiaying Zhang ); 16190562e0baSJiaying Zhang 16200562e0baSJiaying Zhang DECLARE_EVENT_CLASS(ext4__map_blocks_exit, 162121ddd568STheodore Ts'o TP_PROTO(struct inode *inode, unsigned flags, struct ext4_map_blocks *map, 162221ddd568STheodore Ts'o int ret), 16230562e0baSJiaying Zhang 162421ddd568STheodore Ts'o TP_ARGS(inode, flags, map, ret), 16250562e0baSJiaying Zhang 16260562e0baSJiaying Zhang TP_STRUCT__entry( 16270562e0baSJiaying Zhang __field( dev_t, dev ) 1628210c0526SAnatol Pomozov __field( ino_t, ino ) 162921ddd568STheodore Ts'o __field( unsigned int, flags ) 16300562e0baSJiaying Zhang __field( ext4_fsblk_t, pblk ) 1631210c0526SAnatol Pomozov __field( ext4_lblk_t, lblk ) 1632a9c667f8SLukas Czerner __field( unsigned int, len ) 163321ddd568STheodore Ts'o __field( unsigned int, mflags ) 16340562e0baSJiaying Zhang __field( int, ret ) 16350562e0baSJiaying Zhang ), 16360562e0baSJiaying Zhang 16370562e0baSJiaying Zhang TP_fast_assign( 16380562e0baSJiaying Zhang __entry->dev = inode->i_sb->s_dev; 1639210c0526SAnatol Pomozov __entry->ino = inode->i_ino; 164021ddd568STheodore Ts'o __entry->flags = flags; 164119b303d8SZheng Liu __entry->pblk = map->m_pblk; 164219b303d8SZheng Liu __entry->lblk = map->m_lblk; 164319b303d8SZheng Liu __entry->len = map->m_len; 164421ddd568STheodore Ts'o __entry->mflags = map->m_flags; 16450562e0baSJiaying Zhang __entry->ret = ret; 16460562e0baSJiaying Zhang ), 16470562e0baSJiaying Zhang 164821ddd568STheodore Ts'o TP_printk("dev %d,%d ino %lu flags %s lblk %u pblk %llu len %u " 164921ddd568STheodore Ts'o "mflags %s ret %d", 16500562e0baSJiaying Zhang MAJOR(__entry->dev), MINOR(__entry->dev), 16510562e0baSJiaying Zhang (unsigned long) __entry->ino, 165221ddd568STheodore Ts'o show_map_flags(__entry->flags), __entry->lblk, __entry->pblk, 165321ddd568STheodore Ts'o __entry->len, show_mflags(__entry->mflags), __entry->ret) 16540562e0baSJiaying Zhang ); 16550562e0baSJiaying Zhang 16560562e0baSJiaying Zhang DEFINE_EVENT(ext4__map_blocks_exit, ext4_ext_map_blocks_exit, 165721ddd568STheodore Ts'o TP_PROTO(struct inode *inode, unsigned flags, 165821ddd568STheodore Ts'o struct ext4_map_blocks *map, int ret), 16590562e0baSJiaying Zhang 166021ddd568STheodore Ts'o TP_ARGS(inode, flags, map, ret) 16610562e0baSJiaying Zhang ); 16620562e0baSJiaying Zhang 16630562e0baSJiaying Zhang DEFINE_EVENT(ext4__map_blocks_exit, ext4_ind_map_blocks_exit, 166421ddd568STheodore Ts'o TP_PROTO(struct inode *inode, unsigned flags, 166521ddd568STheodore Ts'o struct ext4_map_blocks *map, int ret), 16660562e0baSJiaying Zhang 166721ddd568STheodore Ts'o TP_ARGS(inode, flags, map, ret) 16680562e0baSJiaying Zhang ); 16690562e0baSJiaying Zhang 16700562e0baSJiaying Zhang TRACE_EVENT(ext4_ext_load_extent, 16710562e0baSJiaying Zhang TP_PROTO(struct inode *inode, ext4_lblk_t lblk, ext4_fsblk_t pblk), 16720562e0baSJiaying Zhang 16730562e0baSJiaying Zhang TP_ARGS(inode, lblk, pblk), 16740562e0baSJiaying Zhang 16750562e0baSJiaying Zhang TP_STRUCT__entry( 16760562e0baSJiaying Zhang __field( dev_t, dev ) 1677210c0526SAnatol Pomozov __field( ino_t, ino ) 16780562e0baSJiaying Zhang __field( ext4_fsblk_t, pblk ) 1679210c0526SAnatol Pomozov __field( ext4_lblk_t, lblk ) 16800562e0baSJiaying Zhang ), 16810562e0baSJiaying Zhang 16820562e0baSJiaying Zhang TP_fast_assign( 16830562e0baSJiaying Zhang __entry->dev = inode->i_sb->s_dev; 1684210c0526SAnatol Pomozov __entry->ino = inode->i_ino; 16850562e0baSJiaying Zhang __entry->pblk = pblk; 1686210c0526SAnatol Pomozov __entry->lblk = lblk; 16870562e0baSJiaying Zhang ), 16880562e0baSJiaying Zhang 16890562e0baSJiaying Zhang TP_printk("dev %d,%d ino %lu lblk %u pblk %llu", 16900562e0baSJiaying Zhang MAJOR(__entry->dev), MINOR(__entry->dev), 16910562e0baSJiaying Zhang (unsigned long) __entry->ino, 1692a9c667f8SLukas Czerner __entry->lblk, __entry->pblk) 16930562e0baSJiaying Zhang ); 16940562e0baSJiaying Zhang 16950562e0baSJiaying Zhang TRACE_EVENT(ext4_load_inode, 16960562e0baSJiaying Zhang TP_PROTO(struct inode *inode), 16970562e0baSJiaying Zhang 16980562e0baSJiaying Zhang TP_ARGS(inode), 16990562e0baSJiaying Zhang 17000562e0baSJiaying Zhang TP_STRUCT__entry( 17010562e0baSJiaying Zhang __field( dev_t, dev ) 1702210c0526SAnatol Pomozov __field( ino_t, ino ) 17030562e0baSJiaying Zhang ), 17040562e0baSJiaying Zhang 17050562e0baSJiaying Zhang TP_fast_assign( 17060562e0baSJiaying Zhang __entry->dev = inode->i_sb->s_dev; 1707210c0526SAnatol Pomozov __entry->ino = inode->i_ino; 17080562e0baSJiaying Zhang ), 17090562e0baSJiaying Zhang 17100562e0baSJiaying Zhang TP_printk("dev %d,%d ino %ld", 17110562e0baSJiaying Zhang MAJOR(__entry->dev), MINOR(__entry->dev), 17120562e0baSJiaying Zhang (unsigned long) __entry->ino) 17130562e0baSJiaying Zhang ); 17140562e0baSJiaying Zhang 171512706394STheodore Ts'o TRACE_EVENT(ext4_journal_start, 17165fe2fe89SJan Kara TP_PROTO(struct super_block *sb, int blocks, int rsv_blocks, 17175fe2fe89SJan Kara unsigned long IP), 171812706394STheodore Ts'o 17195fe2fe89SJan Kara TP_ARGS(sb, blocks, rsv_blocks, IP), 172012706394STheodore Ts'o 172112706394STheodore Ts'o TP_STRUCT__entry( 172212706394STheodore Ts'o __field( dev_t, dev ) 172312706394STheodore Ts'o __field(unsigned long, ip ) 17245fe2fe89SJan Kara __field( int, blocks ) 17255fe2fe89SJan Kara __field( int, rsv_blocks ) 172612706394STheodore Ts'o ), 172712706394STheodore Ts'o 172812706394STheodore Ts'o TP_fast_assign( 172912706394STheodore Ts'o __entry->dev = sb->s_dev; 173012706394STheodore Ts'o __entry->ip = IP; 17315fe2fe89SJan Kara __entry->blocks = blocks; 17325fe2fe89SJan Kara __entry->rsv_blocks = rsv_blocks; 173312706394STheodore Ts'o ), 173412706394STheodore Ts'o 17355fe2fe89SJan Kara TP_printk("dev %d,%d blocks, %d rsv_blocks, %d caller %pF", 173612706394STheodore Ts'o MAJOR(__entry->dev), MINOR(__entry->dev), 17375fe2fe89SJan Kara __entry->blocks, __entry->rsv_blocks, (void *)__entry->ip) 17385fe2fe89SJan Kara ); 17395fe2fe89SJan Kara 17405fe2fe89SJan Kara TRACE_EVENT(ext4_journal_start_reserved, 17415fe2fe89SJan Kara TP_PROTO(struct super_block *sb, int blocks, unsigned long IP), 17425fe2fe89SJan Kara 17435fe2fe89SJan Kara TP_ARGS(sb, blocks, IP), 17445fe2fe89SJan Kara 17455fe2fe89SJan Kara TP_STRUCT__entry( 17465fe2fe89SJan Kara __field( dev_t, dev ) 17475fe2fe89SJan Kara __field(unsigned long, ip ) 17485fe2fe89SJan Kara __field( int, blocks ) 17495fe2fe89SJan Kara ), 17505fe2fe89SJan Kara 17515fe2fe89SJan Kara TP_fast_assign( 17525fe2fe89SJan Kara __entry->dev = sb->s_dev; 17535fe2fe89SJan Kara __entry->ip = IP; 17545fe2fe89SJan Kara __entry->blocks = blocks; 17555fe2fe89SJan Kara ), 17565fe2fe89SJan Kara 17575fe2fe89SJan Kara TP_printk("dev %d,%d blocks, %d caller %pF", 17585fe2fe89SJan Kara MAJOR(__entry->dev), MINOR(__entry->dev), 17595fe2fe89SJan Kara __entry->blocks, (void *)__entry->ip) 176012706394STheodore Ts'o ); 176112706394STheodore Ts'o 1762b3d4c2b1STao Ma DECLARE_EVENT_CLASS(ext4__trim, 1763b3d4c2b1STao Ma TP_PROTO(struct super_block *sb, 1764b3d4c2b1STao Ma ext4_group_t group, 1765b3d4c2b1STao Ma ext4_grpblk_t start, 1766b3d4c2b1STao Ma ext4_grpblk_t len), 1767b3d4c2b1STao Ma 1768b3d4c2b1STao Ma TP_ARGS(sb, group, start, len), 1769b3d4c2b1STao Ma 1770b3d4c2b1STao Ma TP_STRUCT__entry( 1771b3d4c2b1STao Ma __field( int, dev_major ) 1772b3d4c2b1STao Ma __field( int, dev_minor ) 1773b3d4c2b1STao Ma __field( __u32, group ) 1774b3d4c2b1STao Ma __field( int, start ) 1775b3d4c2b1STao Ma __field( int, len ) 1776b3d4c2b1STao Ma ), 1777b3d4c2b1STao Ma 1778b3d4c2b1STao Ma TP_fast_assign( 1779b3d4c2b1STao Ma __entry->dev_major = MAJOR(sb->s_dev); 1780b3d4c2b1STao Ma __entry->dev_minor = MINOR(sb->s_dev); 1781b3d4c2b1STao Ma __entry->group = group; 1782b3d4c2b1STao Ma __entry->start = start; 1783b3d4c2b1STao Ma __entry->len = len; 1784b3d4c2b1STao Ma ), 1785b3d4c2b1STao Ma 1786b3d4c2b1STao Ma TP_printk("dev %d,%d group %u, start %d, len %d", 1787b3d4c2b1STao Ma __entry->dev_major, __entry->dev_minor, 1788b3d4c2b1STao Ma __entry->group, __entry->start, __entry->len) 1789b3d4c2b1STao Ma ); 1790b3d4c2b1STao Ma 1791b3d4c2b1STao Ma DEFINE_EVENT(ext4__trim, ext4_trim_extent, 1792b3d4c2b1STao Ma 1793b3d4c2b1STao Ma TP_PROTO(struct super_block *sb, 1794b3d4c2b1STao Ma ext4_group_t group, 1795b3d4c2b1STao Ma ext4_grpblk_t start, 1796b3d4c2b1STao Ma ext4_grpblk_t len), 1797b3d4c2b1STao Ma 1798b3d4c2b1STao Ma TP_ARGS(sb, group, start, len) 1799b3d4c2b1STao Ma ); 1800b3d4c2b1STao Ma 1801b3d4c2b1STao Ma DEFINE_EVENT(ext4__trim, ext4_trim_all_free, 1802b3d4c2b1STao Ma 1803b3d4c2b1STao Ma TP_PROTO(struct super_block *sb, 1804b3d4c2b1STao Ma ext4_group_t group, 1805b3d4c2b1STao Ma ext4_grpblk_t start, 1806b3d4c2b1STao Ma ext4_grpblk_t len), 1807b3d4c2b1STao Ma 1808b3d4c2b1STao Ma TP_ARGS(sb, group, start, len) 1809b3d4c2b1STao Ma ); 1810b3d4c2b1STao Ma 1811d8990240SAditya Kali TRACE_EVENT(ext4_ext_handle_uninitialized_extents, 1812b5645534SZheng Liu TP_PROTO(struct inode *inode, struct ext4_map_blocks *map, int flags, 1813d8990240SAditya Kali unsigned int allocated, ext4_fsblk_t newblock), 1814d8990240SAditya Kali 1815b5645534SZheng Liu TP_ARGS(inode, map, flags, allocated, newblock), 1816d8990240SAditya Kali 1817d8990240SAditya Kali TP_STRUCT__entry( 1818d8990240SAditya Kali __field( dev_t, dev ) 1819210c0526SAnatol Pomozov __field( ino_t, ino ) 1820210c0526SAnatol Pomozov __field( int, flags ) 1821d8990240SAditya Kali __field( ext4_lblk_t, lblk ) 1822d8990240SAditya Kali __field( ext4_fsblk_t, pblk ) 1823d8990240SAditya Kali __field( unsigned int, len ) 1824d8990240SAditya Kali __field( unsigned int, allocated ) 1825d8990240SAditya Kali __field( ext4_fsblk_t, newblk ) 1826d8990240SAditya Kali ), 1827d8990240SAditya Kali 1828d8990240SAditya Kali TP_fast_assign( 1829d8990240SAditya Kali __entry->dev = inode->i_sb->s_dev; 1830210c0526SAnatol Pomozov __entry->ino = inode->i_ino; 1831b5645534SZheng Liu __entry->flags = flags; 1832d8990240SAditya Kali __entry->lblk = map->m_lblk; 1833d8990240SAditya Kali __entry->pblk = map->m_pblk; 1834d8990240SAditya Kali __entry->len = map->m_len; 1835d8990240SAditya Kali __entry->allocated = allocated; 1836d8990240SAditya Kali __entry->newblk = newblock; 1837d8990240SAditya Kali ), 1838d8990240SAditya Kali 183921ddd568STheodore Ts'o TP_printk("dev %d,%d ino %lu m_lblk %u m_pblk %llu m_len %u flags %s " 1840d8990240SAditya Kali "allocated %d newblock %llu", 1841d8990240SAditya Kali MAJOR(__entry->dev), MINOR(__entry->dev), 1842d8990240SAditya Kali (unsigned long) __entry->ino, 1843d8990240SAditya Kali (unsigned) __entry->lblk, (unsigned long long) __entry->pblk, 184421ddd568STheodore Ts'o __entry->len, show_map_flags(__entry->flags), 1845d8990240SAditya Kali (unsigned int) __entry->allocated, 1846d8990240SAditya Kali (unsigned long long) __entry->newblk) 1847d8990240SAditya Kali ); 1848d8990240SAditya Kali 1849d8990240SAditya Kali TRACE_EVENT(ext4_get_implied_cluster_alloc_exit, 1850d8990240SAditya Kali TP_PROTO(struct super_block *sb, struct ext4_map_blocks *map, int ret), 1851d8990240SAditya Kali 1852d8990240SAditya Kali TP_ARGS(sb, map, ret), 1853d8990240SAditya Kali 1854d8990240SAditya Kali TP_STRUCT__entry( 1855d8990240SAditya Kali __field( dev_t, dev ) 1856210c0526SAnatol Pomozov __field( unsigned int, flags ) 1857d8990240SAditya Kali __field( ext4_lblk_t, lblk ) 1858d8990240SAditya Kali __field( ext4_fsblk_t, pblk ) 1859d8990240SAditya Kali __field( unsigned int, len ) 1860d8990240SAditya Kali __field( int, ret ) 1861d8990240SAditya Kali ), 1862d8990240SAditya Kali 1863d8990240SAditya Kali TP_fast_assign( 1864d8990240SAditya Kali __entry->dev = sb->s_dev; 1865210c0526SAnatol Pomozov __entry->flags = map->m_flags; 1866d8990240SAditya Kali __entry->lblk = map->m_lblk; 1867d8990240SAditya Kali __entry->pblk = map->m_pblk; 1868d8990240SAditya Kali __entry->len = map->m_len; 1869d8990240SAditya Kali __entry->ret = ret; 1870d8990240SAditya Kali ), 1871d8990240SAditya Kali 187221ddd568STheodore Ts'o TP_printk("dev %d,%d m_lblk %u m_pblk %llu m_len %u m_flags %s ret %d", 1873d8990240SAditya Kali MAJOR(__entry->dev), MINOR(__entry->dev), 1874d8990240SAditya Kali __entry->lblk, (unsigned long long) __entry->pblk, 187521ddd568STheodore Ts'o __entry->len, show_mflags(__entry->flags), __entry->ret) 1876d8990240SAditya Kali ); 1877d8990240SAditya Kali 1878d8990240SAditya Kali TRACE_EVENT(ext4_ext_put_in_cache, 1879d8990240SAditya Kali TP_PROTO(struct inode *inode, ext4_lblk_t lblk, unsigned int len, 1880d8990240SAditya Kali ext4_fsblk_t start), 1881d8990240SAditya Kali 1882d8990240SAditya Kali TP_ARGS(inode, lblk, len, start), 1883d8990240SAditya Kali 1884d8990240SAditya Kali TP_STRUCT__entry( 1885d8990240SAditya Kali __field( dev_t, dev ) 1886210c0526SAnatol Pomozov __field( ino_t, ino ) 1887d8990240SAditya Kali __field( ext4_lblk_t, lblk ) 1888d8990240SAditya Kali __field( unsigned int, len ) 1889d8990240SAditya Kali __field( ext4_fsblk_t, start ) 1890d8990240SAditya Kali ), 1891d8990240SAditya Kali 1892d8990240SAditya Kali TP_fast_assign( 1893d8990240SAditya Kali __entry->dev = inode->i_sb->s_dev; 1894210c0526SAnatol Pomozov __entry->ino = inode->i_ino; 1895d8990240SAditya Kali __entry->lblk = lblk; 1896d8990240SAditya Kali __entry->len = len; 1897d8990240SAditya Kali __entry->start = start; 1898d8990240SAditya Kali ), 1899d8990240SAditya Kali 1900d8990240SAditya Kali TP_printk("dev %d,%d ino %lu lblk %u len %u start %llu", 1901d8990240SAditya Kali MAJOR(__entry->dev), MINOR(__entry->dev), 1902d8990240SAditya Kali (unsigned long) __entry->ino, 1903d8990240SAditya Kali (unsigned) __entry->lblk, 1904d8990240SAditya Kali __entry->len, 1905d8990240SAditya Kali (unsigned long long) __entry->start) 1906d8990240SAditya Kali ); 1907d8990240SAditya Kali 1908d8990240SAditya Kali TRACE_EVENT(ext4_ext_in_cache, 1909d8990240SAditya Kali TP_PROTO(struct inode *inode, ext4_lblk_t lblk, int ret), 1910d8990240SAditya Kali 1911d8990240SAditya Kali TP_ARGS(inode, lblk, ret), 1912d8990240SAditya Kali 1913d8990240SAditya Kali TP_STRUCT__entry( 1914d8990240SAditya Kali __field( dev_t, dev ) 1915210c0526SAnatol Pomozov __field( ino_t, ino ) 1916d8990240SAditya Kali __field( ext4_lblk_t, lblk ) 1917d8990240SAditya Kali __field( int, ret ) 1918d8990240SAditya Kali ), 1919d8990240SAditya Kali 1920d8990240SAditya Kali TP_fast_assign( 1921d8990240SAditya Kali __entry->dev = inode->i_sb->s_dev; 1922210c0526SAnatol Pomozov __entry->ino = inode->i_ino; 1923d8990240SAditya Kali __entry->lblk = lblk; 1924d8990240SAditya Kali __entry->ret = ret; 1925d8990240SAditya Kali ), 1926d8990240SAditya Kali 1927d8990240SAditya Kali TP_printk("dev %d,%d ino %lu lblk %u ret %d", 1928d8990240SAditya Kali MAJOR(__entry->dev), MINOR(__entry->dev), 1929d8990240SAditya Kali (unsigned long) __entry->ino, 1930d8990240SAditya Kali (unsigned) __entry->lblk, 1931d8990240SAditya Kali __entry->ret) 1932d8990240SAditya Kali 1933d8990240SAditya Kali ); 1934d8990240SAditya Kali 1935d8990240SAditya Kali TRACE_EVENT(ext4_find_delalloc_range, 1936d8990240SAditya Kali TP_PROTO(struct inode *inode, ext4_lblk_t from, ext4_lblk_t to, 1937d8990240SAditya Kali int reverse, int found, ext4_lblk_t found_blk), 1938d8990240SAditya Kali 1939d8990240SAditya Kali TP_ARGS(inode, from, to, reverse, found, found_blk), 1940d8990240SAditya Kali 1941d8990240SAditya Kali TP_STRUCT__entry( 1942d8990240SAditya Kali __field( dev_t, dev ) 1943210c0526SAnatol Pomozov __field( ino_t, ino ) 1944d8990240SAditya Kali __field( ext4_lblk_t, from ) 1945d8990240SAditya Kali __field( ext4_lblk_t, to ) 1946d8990240SAditya Kali __field( int, reverse ) 1947d8990240SAditya Kali __field( int, found ) 1948d8990240SAditya Kali __field( ext4_lblk_t, found_blk ) 1949d8990240SAditya Kali ), 1950d8990240SAditya Kali 1951d8990240SAditya Kali TP_fast_assign( 1952d8990240SAditya Kali __entry->dev = inode->i_sb->s_dev; 1953210c0526SAnatol Pomozov __entry->ino = inode->i_ino; 1954d8990240SAditya Kali __entry->from = from; 1955d8990240SAditya Kali __entry->to = to; 1956d8990240SAditya Kali __entry->reverse = reverse; 1957d8990240SAditya Kali __entry->found = found; 1958d8990240SAditya Kali __entry->found_blk = found_blk; 1959d8990240SAditya Kali ), 1960d8990240SAditya Kali 1961d8990240SAditya Kali TP_printk("dev %d,%d ino %lu from %u to %u reverse %d found %d " 1962d8990240SAditya Kali "(blk = %u)", 1963d8990240SAditya Kali MAJOR(__entry->dev), MINOR(__entry->dev), 1964d8990240SAditya Kali (unsigned long) __entry->ino, 1965d8990240SAditya Kali (unsigned) __entry->from, (unsigned) __entry->to, 1966d8990240SAditya Kali __entry->reverse, __entry->found, 1967d8990240SAditya Kali (unsigned) __entry->found_blk) 1968d8990240SAditya Kali ); 1969d8990240SAditya Kali 1970d8990240SAditya Kali TRACE_EVENT(ext4_get_reserved_cluster_alloc, 1971d8990240SAditya Kali TP_PROTO(struct inode *inode, ext4_lblk_t lblk, unsigned int len), 1972d8990240SAditya Kali 1973d8990240SAditya Kali TP_ARGS(inode, lblk, len), 1974d8990240SAditya Kali 1975d8990240SAditya Kali TP_STRUCT__entry( 1976d8990240SAditya Kali __field( dev_t, dev ) 1977210c0526SAnatol Pomozov __field( ino_t, ino ) 1978d8990240SAditya Kali __field( ext4_lblk_t, lblk ) 1979d8990240SAditya Kali __field( unsigned int, len ) 1980d8990240SAditya Kali ), 1981d8990240SAditya Kali 1982d8990240SAditya Kali TP_fast_assign( 1983d8990240SAditya Kali __entry->dev = inode->i_sb->s_dev; 1984210c0526SAnatol Pomozov __entry->ino = inode->i_ino; 1985d8990240SAditya Kali __entry->lblk = lblk; 1986d8990240SAditya Kali __entry->len = len; 1987d8990240SAditya Kali ), 1988d8990240SAditya Kali 1989d8990240SAditya Kali TP_printk("dev %d,%d ino %lu lblk %u len %u", 1990d8990240SAditya Kali MAJOR(__entry->dev), MINOR(__entry->dev), 1991d8990240SAditya Kali (unsigned long) __entry->ino, 1992d8990240SAditya Kali (unsigned) __entry->lblk, 1993d8990240SAditya Kali __entry->len) 1994d8990240SAditya Kali ); 1995d8990240SAditya Kali 1996d8990240SAditya Kali TRACE_EVENT(ext4_ext_show_extent, 1997d8990240SAditya Kali TP_PROTO(struct inode *inode, ext4_lblk_t lblk, ext4_fsblk_t pblk, 1998d8990240SAditya Kali unsigned short len), 1999d8990240SAditya Kali 2000d8990240SAditya Kali TP_ARGS(inode, lblk, pblk, len), 2001d8990240SAditya Kali 2002d8990240SAditya Kali TP_STRUCT__entry( 2003d8990240SAditya Kali __field( dev_t, dev ) 2004210c0526SAnatol Pomozov __field( ino_t, ino ) 2005d8990240SAditya Kali __field( ext4_fsblk_t, pblk ) 2006210c0526SAnatol Pomozov __field( ext4_lblk_t, lblk ) 2007d8990240SAditya Kali __field( unsigned short, len ) 2008d8990240SAditya Kali ), 2009d8990240SAditya Kali 2010d8990240SAditya Kali TP_fast_assign( 2011d8990240SAditya Kali __entry->dev = inode->i_sb->s_dev; 2012210c0526SAnatol Pomozov __entry->ino = inode->i_ino; 2013d8990240SAditya Kali __entry->pblk = pblk; 2014210c0526SAnatol Pomozov __entry->lblk = lblk; 2015d8990240SAditya Kali __entry->len = len; 2016d8990240SAditya Kali ), 2017d8990240SAditya Kali 2018d8990240SAditya Kali TP_printk("dev %d,%d ino %lu lblk %u pblk %llu len %u", 2019d8990240SAditya Kali MAJOR(__entry->dev), MINOR(__entry->dev), 2020d8990240SAditya Kali (unsigned long) __entry->ino, 2021d8990240SAditya Kali (unsigned) __entry->lblk, 2022d8990240SAditya Kali (unsigned long long) __entry->pblk, 2023d8990240SAditya Kali (unsigned short) __entry->len) 2024d8990240SAditya Kali ); 2025d8990240SAditya Kali 2026d8990240SAditya Kali TRACE_EVENT(ext4_remove_blocks, 2027d8990240SAditya Kali TP_PROTO(struct inode *inode, struct ext4_extent *ex, 2028d8990240SAditya Kali ext4_lblk_t from, ext4_fsblk_t to, 2029d23142c6SLukas Czerner long long partial_cluster), 2030d8990240SAditya Kali 2031d8990240SAditya Kali TP_ARGS(inode, ex, from, to, partial_cluster), 2032d8990240SAditya Kali 2033d8990240SAditya Kali TP_STRUCT__entry( 2034d8990240SAditya Kali __field( dev_t, dev ) 2035210c0526SAnatol Pomozov __field( ino_t, ino ) 2036d8990240SAditya Kali __field( ext4_lblk_t, from ) 2037d8990240SAditya Kali __field( ext4_lblk_t, to ) 2038d23142c6SLukas Czerner __field( long long, partial ) 2039210c0526SAnatol Pomozov __field( ext4_fsblk_t, ee_pblk ) 2040210c0526SAnatol Pomozov __field( ext4_lblk_t, ee_lblk ) 2041210c0526SAnatol Pomozov __field( unsigned short, ee_len ) 2042d8990240SAditya Kali ), 2043d8990240SAditya Kali 2044d8990240SAditya Kali TP_fast_assign( 2045d8990240SAditya Kali __entry->dev = inode->i_sb->s_dev; 2046210c0526SAnatol Pomozov __entry->ino = inode->i_ino; 2047d8990240SAditya Kali __entry->from = from; 2048d8990240SAditya Kali __entry->to = to; 2049d8990240SAditya Kali __entry->partial = partial_cluster; 2050210c0526SAnatol Pomozov __entry->ee_pblk = ext4_ext_pblock(ex); 2051d6a77105STheodore Ts'o __entry->ee_lblk = le32_to_cpu(ex->ee_block); 2052210c0526SAnatol Pomozov __entry->ee_len = ext4_ext_get_actual_len(ex); 2053d8990240SAditya Kali ), 2054d8990240SAditya Kali 2055d8990240SAditya Kali TP_printk("dev %d,%d ino %lu extent [%u(%llu), %u]" 2056d23142c6SLukas Czerner "from %u to %u partial_cluster %lld", 2057d8990240SAditya Kali MAJOR(__entry->dev), MINOR(__entry->dev), 2058d8990240SAditya Kali (unsigned long) __entry->ino, 2059d8990240SAditya Kali (unsigned) __entry->ee_lblk, 2060d8990240SAditya Kali (unsigned long long) __entry->ee_pblk, 2061d8990240SAditya Kali (unsigned short) __entry->ee_len, 2062d8990240SAditya Kali (unsigned) __entry->from, 2063d8990240SAditya Kali (unsigned) __entry->to, 2064d23142c6SLukas Czerner (long long) __entry->partial) 2065d8990240SAditya Kali ); 2066d8990240SAditya Kali 2067d8990240SAditya Kali TRACE_EVENT(ext4_ext_rm_leaf, 2068d8990240SAditya Kali TP_PROTO(struct inode *inode, ext4_lblk_t start, 2069d23142c6SLukas Czerner struct ext4_extent *ex, 2070d23142c6SLukas Czerner long long partial_cluster), 2071d8990240SAditya Kali 2072d8990240SAditya Kali TP_ARGS(inode, start, ex, partial_cluster), 2073d8990240SAditya Kali 2074d8990240SAditya Kali TP_STRUCT__entry( 2075d8990240SAditya Kali __field( dev_t, dev ) 2076210c0526SAnatol Pomozov __field( ino_t, ino ) 2077d23142c6SLukas Czerner __field( long long, partial ) 2078d8990240SAditya Kali __field( ext4_lblk_t, start ) 2079d8990240SAditya Kali __field( ext4_lblk_t, ee_lblk ) 2080d8990240SAditya Kali __field( ext4_fsblk_t, ee_pblk ) 2081d8990240SAditya Kali __field( short, ee_len ) 2082d8990240SAditya Kali ), 2083d8990240SAditya Kali 2084d8990240SAditya Kali TP_fast_assign( 2085d8990240SAditya Kali __entry->dev = inode->i_sb->s_dev; 2086210c0526SAnatol Pomozov __entry->ino = inode->i_ino; 2087210c0526SAnatol Pomozov __entry->partial = partial_cluster; 2088d8990240SAditya Kali __entry->start = start; 2089d8990240SAditya Kali __entry->ee_lblk = le32_to_cpu(ex->ee_block); 2090d8990240SAditya Kali __entry->ee_pblk = ext4_ext_pblock(ex); 2091d8990240SAditya Kali __entry->ee_len = ext4_ext_get_actual_len(ex); 2092d8990240SAditya Kali ), 2093d8990240SAditya Kali 2094d8990240SAditya Kali TP_printk("dev %d,%d ino %lu start_lblk %u last_extent [%u(%llu), %u]" 2095d23142c6SLukas Czerner "partial_cluster %lld", 2096d8990240SAditya Kali MAJOR(__entry->dev), MINOR(__entry->dev), 2097d8990240SAditya Kali (unsigned long) __entry->ino, 2098d8990240SAditya Kali (unsigned) __entry->start, 2099d8990240SAditya Kali (unsigned) __entry->ee_lblk, 2100d8990240SAditya Kali (unsigned long long) __entry->ee_pblk, 2101d8990240SAditya Kali (unsigned short) __entry->ee_len, 2102d23142c6SLukas Czerner (long long) __entry->partial) 2103d8990240SAditya Kali ); 2104d8990240SAditya Kali 2105d8990240SAditya Kali TRACE_EVENT(ext4_ext_rm_idx, 2106d8990240SAditya Kali TP_PROTO(struct inode *inode, ext4_fsblk_t pblk), 2107d8990240SAditya Kali 2108d8990240SAditya Kali TP_ARGS(inode, pblk), 2109d8990240SAditya Kali 2110d8990240SAditya Kali TP_STRUCT__entry( 2111d8990240SAditya Kali __field( dev_t, dev ) 2112210c0526SAnatol Pomozov __field( ino_t, ino ) 2113d8990240SAditya Kali __field( ext4_fsblk_t, pblk ) 2114d8990240SAditya Kali ), 2115d8990240SAditya Kali 2116d8990240SAditya Kali TP_fast_assign( 2117d8990240SAditya Kali __entry->dev = inode->i_sb->s_dev; 2118210c0526SAnatol Pomozov __entry->ino = inode->i_ino; 2119d8990240SAditya Kali __entry->pblk = pblk; 2120d8990240SAditya Kali ), 2121d8990240SAditya Kali 2122d8990240SAditya Kali TP_printk("dev %d,%d ino %lu index_pblk %llu", 2123d8990240SAditya Kali MAJOR(__entry->dev), MINOR(__entry->dev), 2124d8990240SAditya Kali (unsigned long) __entry->ino, 2125d8990240SAditya Kali (unsigned long long) __entry->pblk) 2126d8990240SAditya Kali ); 2127d8990240SAditya Kali 2128d8990240SAditya Kali TRACE_EVENT(ext4_ext_remove_space, 212961801325SLukas Czerner TP_PROTO(struct inode *inode, ext4_lblk_t start, 213061801325SLukas Czerner ext4_lblk_t end, int depth), 2131d8990240SAditya Kali 213261801325SLukas Czerner TP_ARGS(inode, start, end, depth), 2133d8990240SAditya Kali 2134d8990240SAditya Kali TP_STRUCT__entry( 2135d8990240SAditya Kali __field( dev_t, dev ) 2136210c0526SAnatol Pomozov __field( ino_t, ino ) 2137d8990240SAditya Kali __field( ext4_lblk_t, start ) 213861801325SLukas Czerner __field( ext4_lblk_t, end ) 2139d8990240SAditya Kali __field( int, depth ) 2140d8990240SAditya Kali ), 2141d8990240SAditya Kali 2142d8990240SAditya Kali TP_fast_assign( 2143d8990240SAditya Kali __entry->dev = inode->i_sb->s_dev; 2144210c0526SAnatol Pomozov __entry->ino = inode->i_ino; 2145d8990240SAditya Kali __entry->start = start; 214661801325SLukas Czerner __entry->end = end; 2147d8990240SAditya Kali __entry->depth = depth; 2148d8990240SAditya Kali ), 2149d8990240SAditya Kali 215061801325SLukas Czerner TP_printk("dev %d,%d ino %lu since %u end %u depth %d", 2151d8990240SAditya Kali MAJOR(__entry->dev), MINOR(__entry->dev), 2152d8990240SAditya Kali (unsigned long) __entry->ino, 2153d8990240SAditya Kali (unsigned) __entry->start, 215461801325SLukas Czerner (unsigned) __entry->end, 2155d8990240SAditya Kali __entry->depth) 2156d8990240SAditya Kali ); 2157d8990240SAditya Kali 2158d8990240SAditya Kali TRACE_EVENT(ext4_ext_remove_space_done, 215961801325SLukas Czerner TP_PROTO(struct inode *inode, ext4_lblk_t start, ext4_lblk_t end, 2160d23142c6SLukas Czerner int depth, long long partial, __le16 eh_entries), 2161d8990240SAditya Kali 216261801325SLukas Czerner TP_ARGS(inode, start, end, depth, partial, eh_entries), 2163d8990240SAditya Kali 2164d8990240SAditya Kali TP_STRUCT__entry( 2165d8990240SAditya Kali __field( dev_t, dev ) 2166210c0526SAnatol Pomozov __field( ino_t, ino ) 2167d8990240SAditya Kali __field( ext4_lblk_t, start ) 216861801325SLukas Czerner __field( ext4_lblk_t, end ) 2169d8990240SAditya Kali __field( int, depth ) 2170d23142c6SLukas Czerner __field( long long, partial ) 2171d8990240SAditya Kali __field( unsigned short, eh_entries ) 2172d8990240SAditya Kali ), 2173d8990240SAditya Kali 2174d8990240SAditya Kali TP_fast_assign( 2175d8990240SAditya Kali __entry->dev = inode->i_sb->s_dev; 2176210c0526SAnatol Pomozov __entry->ino = inode->i_ino; 2177d8990240SAditya Kali __entry->start = start; 217861801325SLukas Czerner __entry->end = end; 2179d8990240SAditya Kali __entry->depth = depth; 2180d8990240SAditya Kali __entry->partial = partial; 2181d6a77105STheodore Ts'o __entry->eh_entries = le16_to_cpu(eh_entries); 2182d8990240SAditya Kali ), 2183d8990240SAditya Kali 2184d23142c6SLukas Czerner TP_printk("dev %d,%d ino %lu since %u end %u depth %d partial %lld " 2185d8990240SAditya Kali "remaining_entries %u", 2186d8990240SAditya Kali MAJOR(__entry->dev), MINOR(__entry->dev), 2187d8990240SAditya Kali (unsigned long) __entry->ino, 2188d8990240SAditya Kali (unsigned) __entry->start, 218961801325SLukas Czerner (unsigned) __entry->end, 2190d8990240SAditya Kali __entry->depth, 2191d23142c6SLukas Czerner (long long) __entry->partial, 2192d8990240SAditya Kali (unsigned short) __entry->eh_entries) 2193d8990240SAditya Kali ); 2194d8990240SAditya Kali 2195992e9fddSZheng Liu TRACE_EVENT(ext4_es_insert_extent, 2196fdc0212eSZheng Liu TP_PROTO(struct inode *inode, struct extent_status *es), 2197992e9fddSZheng Liu 2198fdc0212eSZheng Liu TP_ARGS(inode, es), 2199992e9fddSZheng Liu 2200992e9fddSZheng Liu TP_STRUCT__entry( 2201992e9fddSZheng Liu __field( dev_t, dev ) 2202992e9fddSZheng Liu __field( ino_t, ino ) 2203fdc0212eSZheng Liu __field( ext4_lblk_t, lblk ) 2204fdc0212eSZheng Liu __field( ext4_lblk_t, len ) 2205fdc0212eSZheng Liu __field( ext4_fsblk_t, pblk ) 220621ddd568STheodore Ts'o __field( char, status ) 2207992e9fddSZheng Liu ), 2208992e9fddSZheng Liu 2209992e9fddSZheng Liu TP_fast_assign( 2210992e9fddSZheng Liu __entry->dev = inode->i_sb->s_dev; 2211992e9fddSZheng Liu __entry->ino = inode->i_ino; 2212fdc0212eSZheng Liu __entry->lblk = es->es_lblk; 2213fdc0212eSZheng Liu __entry->len = es->es_len; 2214fdc0212eSZheng Liu __entry->pblk = ext4_es_pblock(es); 221521ddd568STheodore Ts'o __entry->status = ext4_es_status(es) >> 60; 2216992e9fddSZheng Liu ), 2217992e9fddSZheng Liu 221821ddd568STheodore Ts'o TP_printk("dev %d,%d ino %lu es [%u/%u) mapped %llu status %s", 2219992e9fddSZheng Liu MAJOR(__entry->dev), MINOR(__entry->dev), 2220992e9fddSZheng Liu (unsigned long) __entry->ino, 2221fdc0212eSZheng Liu __entry->lblk, __entry->len, 222221ddd568STheodore Ts'o __entry->pblk, show_extent_status(__entry->status)) 2223992e9fddSZheng Liu ); 2224992e9fddSZheng Liu 2225992e9fddSZheng Liu TRACE_EVENT(ext4_es_remove_extent, 222606b0c886SZheng Liu TP_PROTO(struct inode *inode, ext4_lblk_t lblk, ext4_lblk_t len), 2227992e9fddSZheng Liu 222806b0c886SZheng Liu TP_ARGS(inode, lblk, len), 2229992e9fddSZheng Liu 2230992e9fddSZheng Liu TP_STRUCT__entry( 2231992e9fddSZheng Liu __field( dev_t, dev ) 2232992e9fddSZheng Liu __field( ino_t, ino ) 223306b0c886SZheng Liu __field( loff_t, lblk ) 2234992e9fddSZheng Liu __field( loff_t, len ) 2235992e9fddSZheng Liu ), 2236992e9fddSZheng Liu 2237992e9fddSZheng Liu TP_fast_assign( 2238992e9fddSZheng Liu __entry->dev = inode->i_sb->s_dev; 2239992e9fddSZheng Liu __entry->ino = inode->i_ino; 224006b0c886SZheng Liu __entry->lblk = lblk; 2241992e9fddSZheng Liu __entry->len = len; 2242992e9fddSZheng Liu ), 2243992e9fddSZheng Liu 2244992e9fddSZheng Liu TP_printk("dev %d,%d ino %lu es [%lld/%lld)", 2245992e9fddSZheng Liu MAJOR(__entry->dev), MINOR(__entry->dev), 2246992e9fddSZheng Liu (unsigned long) __entry->ino, 224706b0c886SZheng Liu __entry->lblk, __entry->len) 2248992e9fddSZheng Liu ); 2249992e9fddSZheng Liu 2250e30b5dcaSYan, Zheng TRACE_EVENT(ext4_es_find_delayed_extent_range_enter, 225106b0c886SZheng Liu TP_PROTO(struct inode *inode, ext4_lblk_t lblk), 2252992e9fddSZheng Liu 225306b0c886SZheng Liu TP_ARGS(inode, lblk), 2254992e9fddSZheng Liu 2255992e9fddSZheng Liu TP_STRUCT__entry( 2256992e9fddSZheng Liu __field( dev_t, dev ) 2257992e9fddSZheng Liu __field( ino_t, ino ) 225806b0c886SZheng Liu __field( ext4_lblk_t, lblk ) 2259992e9fddSZheng Liu ), 2260992e9fddSZheng Liu 2261992e9fddSZheng Liu TP_fast_assign( 2262992e9fddSZheng Liu __entry->dev = inode->i_sb->s_dev; 2263992e9fddSZheng Liu __entry->ino = inode->i_ino; 226406b0c886SZheng Liu __entry->lblk = lblk; 2265992e9fddSZheng Liu ), 2266992e9fddSZheng Liu 226706b0c886SZheng Liu TP_printk("dev %d,%d ino %lu lblk %u", 2268992e9fddSZheng Liu MAJOR(__entry->dev), MINOR(__entry->dev), 226906b0c886SZheng Liu (unsigned long) __entry->ino, __entry->lblk) 2270992e9fddSZheng Liu ); 2271992e9fddSZheng Liu 2272e30b5dcaSYan, Zheng TRACE_EVENT(ext4_es_find_delayed_extent_range_exit, 2273be401363SZheng Liu TP_PROTO(struct inode *inode, struct extent_status *es), 2274992e9fddSZheng Liu 2275be401363SZheng Liu TP_ARGS(inode, es), 2276992e9fddSZheng Liu 2277992e9fddSZheng Liu TP_STRUCT__entry( 2278992e9fddSZheng Liu __field( dev_t, dev ) 2279992e9fddSZheng Liu __field( ino_t, ino ) 228006b0c886SZheng Liu __field( ext4_lblk_t, lblk ) 2281992e9fddSZheng Liu __field( ext4_lblk_t, len ) 2282fdc0212eSZheng Liu __field( ext4_fsblk_t, pblk ) 228321ddd568STheodore Ts'o __field( char, status ) 2284992e9fddSZheng Liu ), 2285992e9fddSZheng Liu 2286992e9fddSZheng Liu TP_fast_assign( 2287992e9fddSZheng Liu __entry->dev = inode->i_sb->s_dev; 2288992e9fddSZheng Liu __entry->ino = inode->i_ino; 228906b0c886SZheng Liu __entry->lblk = es->es_lblk; 229006b0c886SZheng Liu __entry->len = es->es_len; 2291fdc0212eSZheng Liu __entry->pblk = ext4_es_pblock(es); 229221ddd568STheodore Ts'o __entry->status = ext4_es_status(es) >> 60; 2293992e9fddSZheng Liu ), 2294992e9fddSZheng Liu 229521ddd568STheodore Ts'o TP_printk("dev %d,%d ino %lu es [%u/%u) mapped %llu status %s", 2296992e9fddSZheng Liu MAJOR(__entry->dev), MINOR(__entry->dev), 2297992e9fddSZheng Liu (unsigned long) __entry->ino, 2298fdc0212eSZheng Liu __entry->lblk, __entry->len, 229921ddd568STheodore Ts'o __entry->pblk, show_extent_status(__entry->status)) 2300992e9fddSZheng Liu ); 2301992e9fddSZheng Liu 2302d100eef2SZheng Liu TRACE_EVENT(ext4_es_lookup_extent_enter, 2303d100eef2SZheng Liu TP_PROTO(struct inode *inode, ext4_lblk_t lblk), 2304d100eef2SZheng Liu 2305d100eef2SZheng Liu TP_ARGS(inode, lblk), 2306d100eef2SZheng Liu 2307d100eef2SZheng Liu TP_STRUCT__entry( 2308d100eef2SZheng Liu __field( dev_t, dev ) 2309d100eef2SZheng Liu __field( ino_t, ino ) 2310d100eef2SZheng Liu __field( ext4_lblk_t, lblk ) 2311d100eef2SZheng Liu ), 2312d100eef2SZheng Liu 2313d100eef2SZheng Liu TP_fast_assign( 2314d100eef2SZheng Liu __entry->dev = inode->i_sb->s_dev; 2315d100eef2SZheng Liu __entry->ino = inode->i_ino; 2316d100eef2SZheng Liu __entry->lblk = lblk; 2317d100eef2SZheng Liu ), 2318d100eef2SZheng Liu 2319d100eef2SZheng Liu TP_printk("dev %d,%d ino %lu lblk %u", 2320d100eef2SZheng Liu MAJOR(__entry->dev), MINOR(__entry->dev), 2321d100eef2SZheng Liu (unsigned long) __entry->ino, __entry->lblk) 2322d100eef2SZheng Liu ); 2323d100eef2SZheng Liu 2324d100eef2SZheng Liu TRACE_EVENT(ext4_es_lookup_extent_exit, 2325d100eef2SZheng Liu TP_PROTO(struct inode *inode, struct extent_status *es, 2326d100eef2SZheng Liu int found), 2327d100eef2SZheng Liu 2328d100eef2SZheng Liu TP_ARGS(inode, es, found), 2329d100eef2SZheng Liu 2330d100eef2SZheng Liu TP_STRUCT__entry( 2331d100eef2SZheng Liu __field( dev_t, dev ) 2332d100eef2SZheng Liu __field( ino_t, ino ) 2333d100eef2SZheng Liu __field( ext4_lblk_t, lblk ) 2334d100eef2SZheng Liu __field( ext4_lblk_t, len ) 2335d100eef2SZheng Liu __field( ext4_fsblk_t, pblk ) 233621ddd568STheodore Ts'o __field( char, status ) 2337d100eef2SZheng Liu __field( int, found ) 2338d100eef2SZheng Liu ), 2339d100eef2SZheng Liu 2340d100eef2SZheng Liu TP_fast_assign( 2341d100eef2SZheng Liu __entry->dev = inode->i_sb->s_dev; 2342d100eef2SZheng Liu __entry->ino = inode->i_ino; 2343d100eef2SZheng Liu __entry->lblk = es->es_lblk; 2344d100eef2SZheng Liu __entry->len = es->es_len; 2345d100eef2SZheng Liu __entry->pblk = ext4_es_pblock(es); 234621ddd568STheodore Ts'o __entry->status = ext4_es_status(es) >> 60; 2347d100eef2SZheng Liu __entry->found = found; 2348d100eef2SZheng Liu ), 2349d100eef2SZheng Liu 235021ddd568STheodore Ts'o TP_printk("dev %d,%d ino %lu found %d [%u/%u) %llu %s", 2351d100eef2SZheng Liu MAJOR(__entry->dev), MINOR(__entry->dev), 2352d100eef2SZheng Liu (unsigned long) __entry->ino, __entry->found, 2353d100eef2SZheng Liu __entry->lblk, __entry->len, 2354d100eef2SZheng Liu __entry->found ? __entry->pblk : 0, 235521ddd568STheodore Ts'o show_extent_status(__entry->found ? __entry->status : 0)) 2356d100eef2SZheng Liu ); 2357d100eef2SZheng Liu 235874cd15cdSZheng Liu TRACE_EVENT(ext4_es_shrink_enter, 235924630774STheodore Ts'o TP_PROTO(struct super_block *sb, int nr_to_scan, int cache_cnt), 236074cd15cdSZheng Liu 236124630774STheodore Ts'o TP_ARGS(sb, nr_to_scan, cache_cnt), 236274cd15cdSZheng Liu 236374cd15cdSZheng Liu TP_STRUCT__entry( 236474cd15cdSZheng Liu __field( dev_t, dev ) 236574cd15cdSZheng Liu __field( int, nr_to_scan ) 236624630774STheodore Ts'o __field( int, cache_cnt ) 236774cd15cdSZheng Liu ), 236874cd15cdSZheng Liu 236974cd15cdSZheng Liu TP_fast_assign( 237074cd15cdSZheng Liu __entry->dev = sb->s_dev; 237174cd15cdSZheng Liu __entry->nr_to_scan = nr_to_scan; 237224630774STheodore Ts'o __entry->cache_cnt = cache_cnt; 237374cd15cdSZheng Liu ), 237474cd15cdSZheng Liu 237524630774STheodore Ts'o TP_printk("dev %d,%d nr_to_scan %d cache_cnt %d", 237674cd15cdSZheng Liu MAJOR(__entry->dev), MINOR(__entry->dev), 237724630774STheodore Ts'o __entry->nr_to_scan, __entry->cache_cnt) 237874cd15cdSZheng Liu ); 237974cd15cdSZheng Liu 238074cd15cdSZheng Liu TRACE_EVENT(ext4_es_shrink_exit, 238124630774STheodore Ts'o TP_PROTO(struct super_block *sb, int shrunk_nr, int cache_cnt), 238274cd15cdSZheng Liu 238324630774STheodore Ts'o TP_ARGS(sb, shrunk_nr, cache_cnt), 238474cd15cdSZheng Liu 238574cd15cdSZheng Liu TP_STRUCT__entry( 238674cd15cdSZheng Liu __field( dev_t, dev ) 238774cd15cdSZheng Liu __field( int, shrunk_nr ) 238824630774STheodore Ts'o __field( int, cache_cnt ) 238974cd15cdSZheng Liu ), 239074cd15cdSZheng Liu 239174cd15cdSZheng Liu TP_fast_assign( 239274cd15cdSZheng Liu __entry->dev = sb->s_dev; 239374cd15cdSZheng Liu __entry->shrunk_nr = shrunk_nr; 239424630774STheodore Ts'o __entry->cache_cnt = cache_cnt; 239574cd15cdSZheng Liu ), 239674cd15cdSZheng Liu 239724630774STheodore Ts'o TP_printk("dev %d,%d shrunk_nr %d cache_cnt %d", 239874cd15cdSZheng Liu MAJOR(__entry->dev), MINOR(__entry->dev), 239924630774STheodore Ts'o __entry->shrunk_nr, __entry->cache_cnt) 240074cd15cdSZheng Liu ); 240174cd15cdSZheng Liu 24029bffad1eSTheodore Ts'o #endif /* _TRACE_EXT4_H */ 24039bffad1eSTheodore Ts'o 24049bffad1eSTheodore Ts'o /* This part must be outside protection */ 24059bffad1eSTheodore Ts'o #include <trace/define_trace.h> 2406