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; 123661d286STheodore Ts'o struct ext4_prealloc_space; 13fb40ba0dSTheodore Ts'o struct ext4_inode_info; 140ef12249SJosh Stone struct mpage_da_data; 15fb40ba0dSTheodore Ts'o 16fb40ba0dSTheodore Ts'o #define EXT4_I(inode) (container_of(inode, struct ext4_inode_info, vfs_inode)) 173661d286STheodore Ts'o 189bffad1eSTheodore Ts'o TRACE_EVENT(ext4_free_inode, 199bffad1eSTheodore Ts'o TP_PROTO(struct inode *inode), 209bffad1eSTheodore Ts'o 219bffad1eSTheodore Ts'o TP_ARGS(inode), 229bffad1eSTheodore Ts'o 239bffad1eSTheodore Ts'o TP_STRUCT__entry( 249bffad1eSTheodore Ts'o __field( dev_t, dev ) 259bffad1eSTheodore Ts'o __field( ino_t, ino ) 269bffad1eSTheodore Ts'o __field( umode_t, mode ) 279bffad1eSTheodore Ts'o __field( uid_t, uid ) 289bffad1eSTheodore Ts'o __field( gid_t, gid ) 299bffad1eSTheodore Ts'o __field( blkcnt_t, blocks ) 309bffad1eSTheodore Ts'o ), 319bffad1eSTheodore Ts'o 329bffad1eSTheodore Ts'o TP_fast_assign( 339bffad1eSTheodore Ts'o __entry->dev = inode->i_sb->s_dev; 349bffad1eSTheodore Ts'o __entry->ino = inode->i_ino; 359bffad1eSTheodore Ts'o __entry->mode = inode->i_mode; 369bffad1eSTheodore Ts'o __entry->uid = inode->i_uid; 379bffad1eSTheodore Ts'o __entry->gid = inode->i_gid; 389bffad1eSTheodore Ts'o __entry->blocks = inode->i_blocks; 399bffad1eSTheodore Ts'o ), 409bffad1eSTheodore Ts'o 416eebee62STheodore Ts'o TP_printk("dev %s ino %lu mode 0%o uid %u gid %u blocks %llu", 42a3710fd1STheodore Ts'o jbd2_dev_to_name(__entry->dev), (unsigned long) __entry->ino, 43a3710fd1STheodore Ts'o __entry->mode, __entry->uid, __entry->gid, 44627ad9fdSTheodore Ts'o (unsigned long long) __entry->blocks) 459bffad1eSTheodore Ts'o ); 469bffad1eSTheodore Ts'o 479bffad1eSTheodore Ts'o TRACE_EVENT(ext4_request_inode, 489bffad1eSTheodore Ts'o TP_PROTO(struct inode *dir, int mode), 499bffad1eSTheodore Ts'o 509bffad1eSTheodore Ts'o TP_ARGS(dir, mode), 519bffad1eSTheodore Ts'o 529bffad1eSTheodore Ts'o TP_STRUCT__entry( 539bffad1eSTheodore Ts'o __field( dev_t, dev ) 549bffad1eSTheodore Ts'o __field( ino_t, dir ) 559bffad1eSTheodore Ts'o __field( umode_t, mode ) 569bffad1eSTheodore Ts'o ), 579bffad1eSTheodore Ts'o 589bffad1eSTheodore Ts'o TP_fast_assign( 599bffad1eSTheodore Ts'o __entry->dev = dir->i_sb->s_dev; 609bffad1eSTheodore Ts'o __entry->dir = dir->i_ino; 619bffad1eSTheodore Ts'o __entry->mode = mode; 629bffad1eSTheodore Ts'o ), 639bffad1eSTheodore Ts'o 646eebee62STheodore Ts'o TP_printk("dev %s dir %lu mode 0%o", 65a3710fd1STheodore Ts'o jbd2_dev_to_name(__entry->dev), (unsigned long) __entry->dir, 66a3710fd1STheodore Ts'o __entry->mode) 679bffad1eSTheodore Ts'o ); 689bffad1eSTheodore Ts'o 699bffad1eSTheodore Ts'o TRACE_EVENT(ext4_allocate_inode, 709bffad1eSTheodore Ts'o TP_PROTO(struct inode *inode, struct inode *dir, int mode), 719bffad1eSTheodore Ts'o 729bffad1eSTheodore Ts'o TP_ARGS(inode, dir, mode), 739bffad1eSTheodore Ts'o 749bffad1eSTheodore Ts'o TP_STRUCT__entry( 759bffad1eSTheodore Ts'o __field( dev_t, dev ) 769bffad1eSTheodore Ts'o __field( ino_t, ino ) 779bffad1eSTheodore Ts'o __field( ino_t, dir ) 789bffad1eSTheodore Ts'o __field( umode_t, mode ) 799bffad1eSTheodore Ts'o ), 809bffad1eSTheodore Ts'o 819bffad1eSTheodore Ts'o TP_fast_assign( 829bffad1eSTheodore Ts'o __entry->dev = inode->i_sb->s_dev; 839bffad1eSTheodore Ts'o __entry->ino = inode->i_ino; 849bffad1eSTheodore Ts'o __entry->dir = dir->i_ino; 859bffad1eSTheodore Ts'o __entry->mode = mode; 869bffad1eSTheodore Ts'o ), 879bffad1eSTheodore Ts'o 886eebee62STheodore Ts'o TP_printk("dev %s ino %lu dir %lu mode 0%o", 89a3710fd1STheodore Ts'o jbd2_dev_to_name(__entry->dev), (unsigned long) __entry->ino, 90a3710fd1STheodore Ts'o (unsigned long) __entry->dir, __entry->mode) 919bffad1eSTheodore Ts'o ); 929bffad1eSTheodore Ts'o 93b5eb34c3SLi Zefan DECLARE_EVENT_CLASS(ext4__write_begin, 949bffad1eSTheodore Ts'o 959bffad1eSTheodore Ts'o TP_PROTO(struct inode *inode, loff_t pos, unsigned int len, 969bffad1eSTheodore Ts'o unsigned int flags), 979bffad1eSTheodore Ts'o 989bffad1eSTheodore Ts'o TP_ARGS(inode, pos, len, flags), 999bffad1eSTheodore Ts'o 1009bffad1eSTheodore Ts'o TP_STRUCT__entry( 1019bffad1eSTheodore Ts'o __field( dev_t, dev ) 1029bffad1eSTheodore Ts'o __field( ino_t, ino ) 1039bffad1eSTheodore Ts'o __field( loff_t, pos ) 1049bffad1eSTheodore Ts'o __field( unsigned int, len ) 1059bffad1eSTheodore Ts'o __field( unsigned int, flags ) 1069bffad1eSTheodore Ts'o ), 1079bffad1eSTheodore Ts'o 1089bffad1eSTheodore Ts'o TP_fast_assign( 1099bffad1eSTheodore Ts'o __entry->dev = inode->i_sb->s_dev; 1109bffad1eSTheodore Ts'o __entry->ino = inode->i_ino; 1119bffad1eSTheodore Ts'o __entry->pos = pos; 1129bffad1eSTheodore Ts'o __entry->len = len; 1139bffad1eSTheodore Ts'o __entry->flags = flags; 1149bffad1eSTheodore Ts'o ), 1159bffad1eSTheodore Ts'o 1169bffad1eSTheodore Ts'o TP_printk("dev %s ino %lu pos %llu len %u flags %u", 117a3710fd1STheodore Ts'o jbd2_dev_to_name(__entry->dev), (unsigned long) __entry->ino, 118a3710fd1STheodore Ts'o __entry->pos, __entry->len, __entry->flags) 1199bffad1eSTheodore Ts'o ); 1209bffad1eSTheodore Ts'o 121b5eb34c3SLi Zefan DEFINE_EVENT(ext4__write_begin, ext4_write_begin, 122b5eb34c3SLi Zefan 123b5eb34c3SLi Zefan TP_PROTO(struct inode *inode, loff_t pos, unsigned int len, 124b5eb34c3SLi Zefan unsigned int flags), 125b5eb34c3SLi Zefan 126b5eb34c3SLi Zefan TP_ARGS(inode, pos, len, flags) 127b5eb34c3SLi Zefan ); 128b5eb34c3SLi Zefan 129b5eb34c3SLi Zefan DEFINE_EVENT(ext4__write_begin, ext4_da_write_begin, 130b5eb34c3SLi Zefan 131b5eb34c3SLi Zefan TP_PROTO(struct inode *inode, loff_t pos, unsigned int len, 132b5eb34c3SLi Zefan unsigned int flags), 133b5eb34c3SLi Zefan 134b5eb34c3SLi Zefan TP_ARGS(inode, pos, len, flags) 135b5eb34c3SLi Zefan ); 136b5eb34c3SLi Zefan 137b5eb34c3SLi Zefan DECLARE_EVENT_CLASS(ext4__write_end, 1389bffad1eSTheodore Ts'o TP_PROTO(struct inode *inode, loff_t pos, unsigned int len, 1399bffad1eSTheodore Ts'o unsigned int copied), 1409bffad1eSTheodore Ts'o 1419bffad1eSTheodore Ts'o TP_ARGS(inode, pos, len, copied), 1429bffad1eSTheodore Ts'o 1439bffad1eSTheodore Ts'o TP_STRUCT__entry( 1449bffad1eSTheodore Ts'o __field( dev_t, dev ) 1459bffad1eSTheodore Ts'o __field( ino_t, ino ) 1469bffad1eSTheodore Ts'o __field( loff_t, pos ) 1479bffad1eSTheodore Ts'o __field( unsigned int, len ) 1489bffad1eSTheodore Ts'o __field( unsigned int, copied ) 1499bffad1eSTheodore Ts'o ), 1509bffad1eSTheodore Ts'o 1519bffad1eSTheodore Ts'o TP_fast_assign( 1529bffad1eSTheodore Ts'o __entry->dev = inode->i_sb->s_dev; 1539bffad1eSTheodore Ts'o __entry->ino = inode->i_ino; 1549bffad1eSTheodore Ts'o __entry->pos = pos; 1559bffad1eSTheodore Ts'o __entry->len = len; 1569bffad1eSTheodore Ts'o __entry->copied = copied; 1579bffad1eSTheodore Ts'o ), 1589bffad1eSTheodore Ts'o 1599bffad1eSTheodore Ts'o TP_printk("dev %s ino %lu pos %llu len %u copied %u", 160a3710fd1STheodore Ts'o jbd2_dev_to_name(__entry->dev), (unsigned long) __entry->ino, 161a3710fd1STheodore Ts'o __entry->pos, __entry->len, __entry->copied) 1629bffad1eSTheodore Ts'o ); 1639bffad1eSTheodore Ts'o 164b5eb34c3SLi Zefan DEFINE_EVENT(ext4__write_end, ext4_ordered_write_end, 165b5eb34c3SLi Zefan 1669bffad1eSTheodore Ts'o TP_PROTO(struct inode *inode, loff_t pos, unsigned int len, 1679bffad1eSTheodore Ts'o unsigned int copied), 1689bffad1eSTheodore Ts'o 169b5eb34c3SLi Zefan TP_ARGS(inode, pos, len, copied) 1709bffad1eSTheodore Ts'o ); 1719bffad1eSTheodore Ts'o 172b5eb34c3SLi Zefan DEFINE_EVENT(ext4__write_end, ext4_writeback_write_end, 173b5eb34c3SLi Zefan 1749bffad1eSTheodore Ts'o TP_PROTO(struct inode *inode, loff_t pos, unsigned int len, 1759bffad1eSTheodore Ts'o unsigned int copied), 1769bffad1eSTheodore Ts'o 177b5eb34c3SLi Zefan TP_ARGS(inode, pos, len, copied) 178b5eb34c3SLi Zefan ); 1799bffad1eSTheodore Ts'o 180b5eb34c3SLi Zefan DEFINE_EVENT(ext4__write_end, ext4_journalled_write_end, 1819bffad1eSTheodore Ts'o 182b5eb34c3SLi Zefan TP_PROTO(struct inode *inode, loff_t pos, unsigned int len, 183b5eb34c3SLi Zefan unsigned int copied), 184b5eb34c3SLi Zefan 185b5eb34c3SLi Zefan TP_ARGS(inode, pos, len, copied) 186b5eb34c3SLi Zefan ); 187b5eb34c3SLi Zefan 188b5eb34c3SLi Zefan DEFINE_EVENT(ext4__write_end, ext4_da_write_end, 189b5eb34c3SLi Zefan 190b5eb34c3SLi Zefan TP_PROTO(struct inode *inode, loff_t pos, unsigned int len, 191b5eb34c3SLi Zefan unsigned int copied), 192b5eb34c3SLi Zefan 193b5eb34c3SLi Zefan TP_ARGS(inode, pos, len, copied) 1949bffad1eSTheodore Ts'o ); 1959bffad1eSTheodore Ts'o 19643ce1d23SAneesh Kumar K.V TRACE_EVENT(ext4_writepage, 1979bffad1eSTheodore Ts'o TP_PROTO(struct inode *inode, struct page *page), 1989bffad1eSTheodore Ts'o 1999bffad1eSTheodore Ts'o TP_ARGS(inode, page), 2009bffad1eSTheodore Ts'o 2019bffad1eSTheodore Ts'o TP_STRUCT__entry( 2029bffad1eSTheodore Ts'o __field( dev_t, dev ) 2039bffad1eSTheodore Ts'o __field( ino_t, ino ) 2049bffad1eSTheodore Ts'o __field( pgoff_t, index ) 2059bffad1eSTheodore Ts'o 2069bffad1eSTheodore Ts'o ), 2079bffad1eSTheodore Ts'o 2089bffad1eSTheodore Ts'o TP_fast_assign( 2099bffad1eSTheodore Ts'o __entry->dev = inode->i_sb->s_dev; 2109bffad1eSTheodore Ts'o __entry->ino = inode->i_ino; 2119bffad1eSTheodore Ts'o __entry->index = page->index; 2129bffad1eSTheodore Ts'o ), 2139bffad1eSTheodore Ts'o 2149bffad1eSTheodore Ts'o TP_printk("dev %s ino %lu page_index %lu", 215a3710fd1STheodore Ts'o jbd2_dev_to_name(__entry->dev), (unsigned long) __entry->ino, 216a3710fd1STheodore Ts'o __entry->index) 2179bffad1eSTheodore Ts'o ); 2189bffad1eSTheodore Ts'o 2199bffad1eSTheodore Ts'o TRACE_EVENT(ext4_da_writepages, 2209bffad1eSTheodore Ts'o TP_PROTO(struct inode *inode, struct writeback_control *wbc), 2219bffad1eSTheodore Ts'o 2229bffad1eSTheodore Ts'o TP_ARGS(inode, wbc), 2239bffad1eSTheodore Ts'o 2249bffad1eSTheodore Ts'o TP_STRUCT__entry( 2259bffad1eSTheodore Ts'o __field( dev_t, dev ) 2269bffad1eSTheodore Ts'o __field( ino_t, ino ) 2279bffad1eSTheodore Ts'o __field( long, nr_to_write ) 2289bffad1eSTheodore Ts'o __field( long, pages_skipped ) 2299bffad1eSTheodore Ts'o __field( loff_t, range_start ) 2309bffad1eSTheodore Ts'o __field( loff_t, range_end ) 2319bffad1eSTheodore Ts'o __field( char, nonblocking ) 2329bffad1eSTheodore Ts'o __field( char, for_kupdate ) 2339bffad1eSTheodore Ts'o __field( char, for_reclaim ) 2349bffad1eSTheodore Ts'o __field( char, range_cyclic ) 23555138e0bSTheodore Ts'o __field( pgoff_t, writeback_index ) 2369bffad1eSTheodore Ts'o ), 2379bffad1eSTheodore Ts'o 2389bffad1eSTheodore Ts'o TP_fast_assign( 2399bffad1eSTheodore Ts'o __entry->dev = inode->i_sb->s_dev; 2409bffad1eSTheodore Ts'o __entry->ino = inode->i_ino; 2419bffad1eSTheodore Ts'o __entry->nr_to_write = wbc->nr_to_write; 2429bffad1eSTheodore Ts'o __entry->pages_skipped = wbc->pages_skipped; 2439bffad1eSTheodore Ts'o __entry->range_start = wbc->range_start; 2449bffad1eSTheodore Ts'o __entry->range_end = wbc->range_end; 2459bffad1eSTheodore Ts'o __entry->nonblocking = wbc->nonblocking; 2469bffad1eSTheodore Ts'o __entry->for_kupdate = wbc->for_kupdate; 2479bffad1eSTheodore Ts'o __entry->for_reclaim = wbc->for_reclaim; 2489bffad1eSTheodore Ts'o __entry->range_cyclic = wbc->range_cyclic; 24955138e0bSTheodore Ts'o __entry->writeback_index = inode->i_mapping->writeback_index; 2509bffad1eSTheodore Ts'o ), 2519bffad1eSTheodore Ts'o 25255138e0bSTheodore Ts'o TP_printk("dev %s ino %lu nr_to_write %ld pages_skipped %ld range_start %llu range_end %llu nonblocking %d for_kupdate %d for_reclaim %d range_cyclic %d writeback_index %lu", 253a3710fd1STheodore Ts'o jbd2_dev_to_name(__entry->dev), 254a3710fd1STheodore Ts'o (unsigned long) __entry->ino, __entry->nr_to_write, 2559bffad1eSTheodore Ts'o __entry->pages_skipped, __entry->range_start, 2569bffad1eSTheodore Ts'o __entry->range_end, __entry->nonblocking, 2579bffad1eSTheodore Ts'o __entry->for_kupdate, __entry->for_reclaim, 25855138e0bSTheodore Ts'o __entry->range_cyclic, 25955138e0bSTheodore Ts'o (unsigned long) __entry->writeback_index) 2609bffad1eSTheodore Ts'o ); 2619bffad1eSTheodore Ts'o 262b3a3ca8cSTheodore Ts'o TRACE_EVENT(ext4_da_write_pages, 263b3a3ca8cSTheodore Ts'o TP_PROTO(struct inode *inode, struct mpage_da_data *mpd), 264b3a3ca8cSTheodore Ts'o 265b3a3ca8cSTheodore Ts'o TP_ARGS(inode, mpd), 266b3a3ca8cSTheodore Ts'o 267b3a3ca8cSTheodore Ts'o TP_STRUCT__entry( 268b3a3ca8cSTheodore Ts'o __field( dev_t, dev ) 269b3a3ca8cSTheodore Ts'o __field( ino_t, ino ) 270b3a3ca8cSTheodore Ts'o __field( __u64, b_blocknr ) 271b3a3ca8cSTheodore Ts'o __field( __u32, b_size ) 272b3a3ca8cSTheodore Ts'o __field( __u32, b_state ) 273b3a3ca8cSTheodore Ts'o __field( unsigned long, first_page ) 274b3a3ca8cSTheodore Ts'o __field( int, io_done ) 275b3a3ca8cSTheodore Ts'o __field( int, pages_written ) 276b3a3ca8cSTheodore Ts'o ), 277b3a3ca8cSTheodore Ts'o 278b3a3ca8cSTheodore Ts'o TP_fast_assign( 279b3a3ca8cSTheodore Ts'o __entry->dev = inode->i_sb->s_dev; 280b3a3ca8cSTheodore Ts'o __entry->ino = inode->i_ino; 281b3a3ca8cSTheodore Ts'o __entry->b_blocknr = mpd->b_blocknr; 282b3a3ca8cSTheodore Ts'o __entry->b_size = mpd->b_size; 283b3a3ca8cSTheodore Ts'o __entry->b_state = mpd->b_state; 284b3a3ca8cSTheodore Ts'o __entry->first_page = mpd->first_page; 285b3a3ca8cSTheodore Ts'o __entry->io_done = mpd->io_done; 286b3a3ca8cSTheodore Ts'o __entry->pages_written = mpd->pages_written; 287b3a3ca8cSTheodore Ts'o ), 288b3a3ca8cSTheodore Ts'o 289b3a3ca8cSTheodore Ts'o TP_printk("dev %s ino %lu b_blocknr %llu b_size %u b_state 0x%04x first_page %lu io_done %d pages_written %d", 290a3710fd1STheodore Ts'o jbd2_dev_to_name(__entry->dev), (unsigned long) __entry->ino, 291b3a3ca8cSTheodore Ts'o __entry->b_blocknr, __entry->b_size, 292b3a3ca8cSTheodore Ts'o __entry->b_state, __entry->first_page, 293b3a3ca8cSTheodore Ts'o __entry->io_done, __entry->pages_written) 294b3a3ca8cSTheodore Ts'o ); 295b3a3ca8cSTheodore Ts'o 2969bffad1eSTheodore Ts'o TRACE_EVENT(ext4_da_writepages_result, 2979bffad1eSTheodore Ts'o TP_PROTO(struct inode *inode, struct writeback_control *wbc, 2989bffad1eSTheodore Ts'o int ret, int pages_written), 2999bffad1eSTheodore Ts'o 3009bffad1eSTheodore Ts'o TP_ARGS(inode, wbc, ret, pages_written), 3019bffad1eSTheodore Ts'o 3029bffad1eSTheodore Ts'o TP_STRUCT__entry( 3039bffad1eSTheodore Ts'o __field( dev_t, dev ) 3049bffad1eSTheodore Ts'o __field( ino_t, ino ) 3059bffad1eSTheodore Ts'o __field( int, ret ) 3069bffad1eSTheodore Ts'o __field( int, pages_written ) 3079bffad1eSTheodore Ts'o __field( long, pages_skipped ) 3089bffad1eSTheodore Ts'o __field( char, more_io ) 3099bffad1eSTheodore Ts'o __field( char, no_nrwrite_index_update ) 31055138e0bSTheodore Ts'o __field( pgoff_t, writeback_index ) 3119bffad1eSTheodore Ts'o ), 3129bffad1eSTheodore Ts'o 3139bffad1eSTheodore Ts'o TP_fast_assign( 3149bffad1eSTheodore Ts'o __entry->dev = inode->i_sb->s_dev; 3159bffad1eSTheodore Ts'o __entry->ino = inode->i_ino; 3169bffad1eSTheodore Ts'o __entry->ret = ret; 3179bffad1eSTheodore Ts'o __entry->pages_written = pages_written; 3189bffad1eSTheodore Ts'o __entry->pages_skipped = wbc->pages_skipped; 3199bffad1eSTheodore Ts'o __entry->more_io = wbc->more_io; 3209bffad1eSTheodore Ts'o __entry->no_nrwrite_index_update = wbc->no_nrwrite_index_update; 32155138e0bSTheodore Ts'o __entry->writeback_index = inode->i_mapping->writeback_index; 3229bffad1eSTheodore Ts'o ), 3239bffad1eSTheodore Ts'o 324b4d72415SWu Fengguang TP_printk("dev %s ino %lu ret %d pages_written %d pages_skipped %ld more_io %d no_nrwrite_index_update %d writeback_index %lu", 325a3710fd1STheodore Ts'o jbd2_dev_to_name(__entry->dev), 326a3710fd1STheodore Ts'o (unsigned long) __entry->ino, __entry->ret, 3279bffad1eSTheodore Ts'o __entry->pages_written, __entry->pages_skipped, 328b4d72415SWu Fengguang __entry->more_io, 32955138e0bSTheodore Ts'o __entry->no_nrwrite_index_update, 33055138e0bSTheodore Ts'o (unsigned long) __entry->writeback_index) 3319bffad1eSTheodore Ts'o ); 3329bffad1eSTheodore Ts'o 3339bffad1eSTheodore Ts'o TRACE_EVENT(ext4_discard_blocks, 3349bffad1eSTheodore Ts'o TP_PROTO(struct super_block *sb, unsigned long long blk, 3359bffad1eSTheodore Ts'o unsigned long long count), 3369bffad1eSTheodore Ts'o 3379bffad1eSTheodore Ts'o TP_ARGS(sb, blk, count), 3389bffad1eSTheodore Ts'o 3399bffad1eSTheodore Ts'o TP_STRUCT__entry( 3409bffad1eSTheodore Ts'o __field( dev_t, dev ) 3419bffad1eSTheodore Ts'o __field( __u64, blk ) 3429bffad1eSTheodore Ts'o __field( __u64, count ) 3439bffad1eSTheodore Ts'o 3449bffad1eSTheodore Ts'o ), 3459bffad1eSTheodore Ts'o 3469bffad1eSTheodore Ts'o TP_fast_assign( 3479bffad1eSTheodore Ts'o __entry->dev = sb->s_dev; 3489bffad1eSTheodore Ts'o __entry->blk = blk; 3499bffad1eSTheodore Ts'o __entry->count = count; 3509bffad1eSTheodore Ts'o ), 3519bffad1eSTheodore Ts'o 3529bffad1eSTheodore Ts'o TP_printk("dev %s blk %llu count %llu", 3539bffad1eSTheodore Ts'o jbd2_dev_to_name(__entry->dev), __entry->blk, __entry->count) 3549bffad1eSTheodore Ts'o ); 3559bffad1eSTheodore Ts'o 3569bffad1eSTheodore Ts'o TRACE_EVENT(ext4_mb_new_inode_pa, 3579bffad1eSTheodore Ts'o TP_PROTO(struct ext4_allocation_context *ac, 3589bffad1eSTheodore Ts'o struct ext4_prealloc_space *pa), 3599bffad1eSTheodore Ts'o 3609bffad1eSTheodore Ts'o TP_ARGS(ac, pa), 3619bffad1eSTheodore Ts'o 3629bffad1eSTheodore Ts'o TP_STRUCT__entry( 3639bffad1eSTheodore Ts'o __field( dev_t, dev ) 3649bffad1eSTheodore Ts'o __field( ino_t, ino ) 3659bffad1eSTheodore Ts'o __field( __u64, pa_pstart ) 3669bffad1eSTheodore Ts'o __field( __u32, pa_len ) 3679bffad1eSTheodore Ts'o __field( __u64, pa_lstart ) 3689bffad1eSTheodore Ts'o 3699bffad1eSTheodore Ts'o ), 3709bffad1eSTheodore Ts'o 3719bffad1eSTheodore Ts'o TP_fast_assign( 3729bffad1eSTheodore Ts'o __entry->dev = ac->ac_sb->s_dev; 3739bffad1eSTheodore Ts'o __entry->ino = ac->ac_inode->i_ino; 3749bffad1eSTheodore Ts'o __entry->pa_pstart = pa->pa_pstart; 3759bffad1eSTheodore Ts'o __entry->pa_len = pa->pa_len; 3769bffad1eSTheodore Ts'o __entry->pa_lstart = pa->pa_lstart; 3779bffad1eSTheodore Ts'o ), 3789bffad1eSTheodore Ts'o 3799bffad1eSTheodore Ts'o TP_printk("dev %s ino %lu pstart %llu len %u lstart %llu", 380a3710fd1STheodore Ts'o jbd2_dev_to_name(__entry->dev), (unsigned long) __entry->ino, 381a3710fd1STheodore Ts'o __entry->pa_pstart, __entry->pa_len, __entry->pa_lstart) 3829bffad1eSTheodore Ts'o ); 3839bffad1eSTheodore Ts'o 3849bffad1eSTheodore Ts'o TRACE_EVENT(ext4_mb_new_group_pa, 3859bffad1eSTheodore Ts'o TP_PROTO(struct ext4_allocation_context *ac, 3869bffad1eSTheodore Ts'o struct ext4_prealloc_space *pa), 3879bffad1eSTheodore Ts'o 3889bffad1eSTheodore Ts'o TP_ARGS(ac, pa), 3899bffad1eSTheodore Ts'o 3909bffad1eSTheodore Ts'o TP_STRUCT__entry( 3919bffad1eSTheodore Ts'o __field( dev_t, dev ) 3929bffad1eSTheodore Ts'o __field( ino_t, ino ) 3939bffad1eSTheodore Ts'o __field( __u64, pa_pstart ) 3949bffad1eSTheodore Ts'o __field( __u32, pa_len ) 3959bffad1eSTheodore Ts'o __field( __u64, pa_lstart ) 3969bffad1eSTheodore Ts'o 3979bffad1eSTheodore Ts'o ), 3989bffad1eSTheodore Ts'o 3999bffad1eSTheodore Ts'o TP_fast_assign( 4009bffad1eSTheodore Ts'o __entry->dev = ac->ac_sb->s_dev; 4019bffad1eSTheodore Ts'o __entry->ino = ac->ac_inode->i_ino; 4029bffad1eSTheodore Ts'o __entry->pa_pstart = pa->pa_pstart; 4039bffad1eSTheodore Ts'o __entry->pa_len = pa->pa_len; 4049bffad1eSTheodore Ts'o __entry->pa_lstart = pa->pa_lstart; 4059bffad1eSTheodore Ts'o ), 4069bffad1eSTheodore Ts'o 4079bffad1eSTheodore Ts'o TP_printk("dev %s ino %lu pstart %llu len %u lstart %llu", 408a3710fd1STheodore Ts'o jbd2_dev_to_name(__entry->dev), (unsigned long) __entry->ino, 409a3710fd1STheodore Ts'o __entry->pa_pstart, __entry->pa_len, __entry->pa_lstart) 4109bffad1eSTheodore Ts'o ); 4119bffad1eSTheodore Ts'o 4129bffad1eSTheodore Ts'o TRACE_EVENT(ext4_mb_release_inode_pa, 4139bffad1eSTheodore Ts'o TP_PROTO(struct ext4_allocation_context *ac, 4149bffad1eSTheodore Ts'o struct ext4_prealloc_space *pa, 4159bffad1eSTheodore Ts'o unsigned long long block, unsigned int count), 4169bffad1eSTheodore Ts'o 4179bffad1eSTheodore Ts'o TP_ARGS(ac, pa, block, count), 4189bffad1eSTheodore Ts'o 4199bffad1eSTheodore Ts'o TP_STRUCT__entry( 4209bffad1eSTheodore Ts'o __field( dev_t, dev ) 4219bffad1eSTheodore Ts'o __field( ino_t, ino ) 4229bffad1eSTheodore Ts'o __field( __u64, block ) 4239bffad1eSTheodore Ts'o __field( __u32, count ) 4249bffad1eSTheodore Ts'o 4259bffad1eSTheodore Ts'o ), 4269bffad1eSTheodore Ts'o 4279bffad1eSTheodore Ts'o TP_fast_assign( 4289bffad1eSTheodore Ts'o __entry->dev = ac->ac_sb->s_dev; 4299bffad1eSTheodore Ts'o __entry->ino = ac->ac_inode->i_ino; 4309bffad1eSTheodore Ts'o __entry->block = block; 4319bffad1eSTheodore Ts'o __entry->count = count; 4329bffad1eSTheodore Ts'o ), 4339bffad1eSTheodore Ts'o 4349bffad1eSTheodore Ts'o TP_printk("dev %s ino %lu block %llu count %u", 435a3710fd1STheodore Ts'o jbd2_dev_to_name(__entry->dev), (unsigned long) __entry->ino, 436a3710fd1STheodore Ts'o __entry->block, __entry->count) 4379bffad1eSTheodore Ts'o ); 4389bffad1eSTheodore Ts'o 4399bffad1eSTheodore Ts'o TRACE_EVENT(ext4_mb_release_group_pa, 4409bffad1eSTheodore Ts'o TP_PROTO(struct ext4_allocation_context *ac, 4419bffad1eSTheodore Ts'o struct ext4_prealloc_space *pa), 4429bffad1eSTheodore Ts'o 4439bffad1eSTheodore Ts'o TP_ARGS(ac, pa), 4449bffad1eSTheodore Ts'o 4459bffad1eSTheodore Ts'o TP_STRUCT__entry( 4469bffad1eSTheodore Ts'o __field( dev_t, dev ) 4479bffad1eSTheodore Ts'o __field( ino_t, ino ) 4489bffad1eSTheodore Ts'o __field( __u64, pa_pstart ) 4499bffad1eSTheodore Ts'o __field( __u32, pa_len ) 4509bffad1eSTheodore Ts'o 4519bffad1eSTheodore Ts'o ), 4529bffad1eSTheodore Ts'o 4539bffad1eSTheodore Ts'o TP_fast_assign( 4549bffad1eSTheodore Ts'o __entry->dev = ac->ac_sb->s_dev; 4559bffad1eSTheodore Ts'o __entry->ino = ac->ac_inode->i_ino; 4569bffad1eSTheodore Ts'o __entry->pa_pstart = pa->pa_pstart; 4579bffad1eSTheodore Ts'o __entry->pa_len = pa->pa_len; 4589bffad1eSTheodore Ts'o ), 4599bffad1eSTheodore Ts'o 4609bffad1eSTheodore Ts'o TP_printk("dev %s pstart %llu len %u", 4619bffad1eSTheodore Ts'o jbd2_dev_to_name(__entry->dev), __entry->pa_pstart, __entry->pa_len) 4629bffad1eSTheodore Ts'o ); 4639bffad1eSTheodore Ts'o 4649bffad1eSTheodore Ts'o TRACE_EVENT(ext4_discard_preallocations, 4659bffad1eSTheodore Ts'o TP_PROTO(struct inode *inode), 4669bffad1eSTheodore Ts'o 4679bffad1eSTheodore Ts'o TP_ARGS(inode), 4689bffad1eSTheodore Ts'o 4699bffad1eSTheodore Ts'o TP_STRUCT__entry( 4709bffad1eSTheodore Ts'o __field( dev_t, dev ) 4719bffad1eSTheodore Ts'o __field( ino_t, ino ) 4729bffad1eSTheodore Ts'o 4739bffad1eSTheodore Ts'o ), 4749bffad1eSTheodore Ts'o 4759bffad1eSTheodore Ts'o TP_fast_assign( 4769bffad1eSTheodore Ts'o __entry->dev = inode->i_sb->s_dev; 4779bffad1eSTheodore Ts'o __entry->ino = inode->i_ino; 4789bffad1eSTheodore Ts'o ), 4799bffad1eSTheodore Ts'o 4809bffad1eSTheodore Ts'o TP_printk("dev %s ino %lu", 481a3710fd1STheodore Ts'o jbd2_dev_to_name(__entry->dev), (unsigned long) __entry->ino) 4829bffad1eSTheodore Ts'o ); 4839bffad1eSTheodore Ts'o 4849bffad1eSTheodore Ts'o TRACE_EVENT(ext4_mb_discard_preallocations, 4859bffad1eSTheodore Ts'o TP_PROTO(struct super_block *sb, int needed), 4869bffad1eSTheodore Ts'o 4879bffad1eSTheodore Ts'o TP_ARGS(sb, needed), 4889bffad1eSTheodore Ts'o 4899bffad1eSTheodore Ts'o TP_STRUCT__entry( 4909bffad1eSTheodore Ts'o __field( dev_t, dev ) 4919bffad1eSTheodore Ts'o __field( int, needed ) 4929bffad1eSTheodore Ts'o 4939bffad1eSTheodore Ts'o ), 4949bffad1eSTheodore Ts'o 4959bffad1eSTheodore Ts'o TP_fast_assign( 4969bffad1eSTheodore Ts'o __entry->dev = sb->s_dev; 4979bffad1eSTheodore Ts'o __entry->needed = needed; 4989bffad1eSTheodore Ts'o ), 4999bffad1eSTheodore Ts'o 5009bffad1eSTheodore Ts'o TP_printk("dev %s needed %d", 5019bffad1eSTheodore Ts'o jbd2_dev_to_name(__entry->dev), __entry->needed) 5029bffad1eSTheodore Ts'o ); 5039bffad1eSTheodore Ts'o 5049bffad1eSTheodore Ts'o TRACE_EVENT(ext4_request_blocks, 5059bffad1eSTheodore Ts'o TP_PROTO(struct ext4_allocation_request *ar), 5069bffad1eSTheodore Ts'o 5079bffad1eSTheodore Ts'o TP_ARGS(ar), 5089bffad1eSTheodore Ts'o 5099bffad1eSTheodore Ts'o TP_STRUCT__entry( 5109bffad1eSTheodore Ts'o __field( dev_t, dev ) 5119bffad1eSTheodore Ts'o __field( ino_t, ino ) 5129bffad1eSTheodore Ts'o __field( unsigned int, flags ) 5139bffad1eSTheodore Ts'o __field( unsigned int, len ) 5149bffad1eSTheodore Ts'o __field( __u64, logical ) 5159bffad1eSTheodore Ts'o __field( __u64, goal ) 5169bffad1eSTheodore Ts'o __field( __u64, lleft ) 5179bffad1eSTheodore Ts'o __field( __u64, lright ) 5189bffad1eSTheodore Ts'o __field( __u64, pleft ) 5199bffad1eSTheodore Ts'o __field( __u64, pright ) 5209bffad1eSTheodore Ts'o ), 5219bffad1eSTheodore Ts'o 5229bffad1eSTheodore Ts'o TP_fast_assign( 5239bffad1eSTheodore Ts'o __entry->dev = ar->inode->i_sb->s_dev; 5249bffad1eSTheodore Ts'o __entry->ino = ar->inode->i_ino; 5259bffad1eSTheodore Ts'o __entry->flags = ar->flags; 5269bffad1eSTheodore Ts'o __entry->len = ar->len; 5279bffad1eSTheodore Ts'o __entry->logical = ar->logical; 5289bffad1eSTheodore Ts'o __entry->goal = ar->goal; 5299bffad1eSTheodore Ts'o __entry->lleft = ar->lleft; 5309bffad1eSTheodore Ts'o __entry->lright = ar->lright; 5319bffad1eSTheodore Ts'o __entry->pleft = ar->pleft; 5329bffad1eSTheodore Ts'o __entry->pright = ar->pright; 5339bffad1eSTheodore Ts'o ), 5349bffad1eSTheodore Ts'o 5359bffad1eSTheodore Ts'o TP_printk("dev %s ino %lu flags %u len %u lblk %llu goal %llu lleft %llu lright %llu pleft %llu pright %llu ", 536a3710fd1STheodore Ts'o jbd2_dev_to_name(__entry->dev), (unsigned long) __entry->ino, 537a3710fd1STheodore Ts'o __entry->flags, __entry->len, 5389bffad1eSTheodore Ts'o (unsigned long long) __entry->logical, 5399bffad1eSTheodore Ts'o (unsigned long long) __entry->goal, 5409bffad1eSTheodore Ts'o (unsigned long long) __entry->lleft, 5419bffad1eSTheodore Ts'o (unsigned long long) __entry->lright, 5429bffad1eSTheodore Ts'o (unsigned long long) __entry->pleft, 5439bffad1eSTheodore Ts'o (unsigned long long) __entry->pright) 5449bffad1eSTheodore Ts'o ); 5459bffad1eSTheodore Ts'o 5469bffad1eSTheodore Ts'o TRACE_EVENT(ext4_allocate_blocks, 5479bffad1eSTheodore Ts'o TP_PROTO(struct ext4_allocation_request *ar, unsigned long long block), 5489bffad1eSTheodore Ts'o 5499bffad1eSTheodore Ts'o TP_ARGS(ar, block), 5509bffad1eSTheodore Ts'o 5519bffad1eSTheodore Ts'o TP_STRUCT__entry( 5529bffad1eSTheodore Ts'o __field( dev_t, dev ) 5539bffad1eSTheodore Ts'o __field( ino_t, ino ) 5549bffad1eSTheodore Ts'o __field( __u64, block ) 5559bffad1eSTheodore Ts'o __field( unsigned int, flags ) 5569bffad1eSTheodore Ts'o __field( unsigned int, len ) 5579bffad1eSTheodore Ts'o __field( __u64, logical ) 5589bffad1eSTheodore Ts'o __field( __u64, goal ) 5599bffad1eSTheodore Ts'o __field( __u64, lleft ) 5609bffad1eSTheodore Ts'o __field( __u64, lright ) 5619bffad1eSTheodore Ts'o __field( __u64, pleft ) 5629bffad1eSTheodore Ts'o __field( __u64, pright ) 5639bffad1eSTheodore Ts'o ), 5649bffad1eSTheodore Ts'o 5659bffad1eSTheodore Ts'o TP_fast_assign( 5669bffad1eSTheodore Ts'o __entry->dev = ar->inode->i_sb->s_dev; 5679bffad1eSTheodore Ts'o __entry->ino = ar->inode->i_ino; 5689bffad1eSTheodore Ts'o __entry->block = block; 5699bffad1eSTheodore Ts'o __entry->flags = ar->flags; 5709bffad1eSTheodore Ts'o __entry->len = ar->len; 5719bffad1eSTheodore Ts'o __entry->logical = ar->logical; 5729bffad1eSTheodore Ts'o __entry->goal = ar->goal; 5739bffad1eSTheodore Ts'o __entry->lleft = ar->lleft; 5749bffad1eSTheodore Ts'o __entry->lright = ar->lright; 5759bffad1eSTheodore Ts'o __entry->pleft = ar->pleft; 5769bffad1eSTheodore Ts'o __entry->pright = ar->pright; 5779bffad1eSTheodore Ts'o ), 5789bffad1eSTheodore Ts'o 5799bffad1eSTheodore Ts'o TP_printk("dev %s ino %lu flags %u len %u block %llu lblk %llu goal %llu lleft %llu lright %llu pleft %llu pright %llu ", 580a3710fd1STheodore Ts'o jbd2_dev_to_name(__entry->dev), (unsigned long) __entry->ino, 581a3710fd1STheodore Ts'o __entry->flags, __entry->len, __entry->block, 5829bffad1eSTheodore Ts'o (unsigned long long) __entry->logical, 5839bffad1eSTheodore Ts'o (unsigned long long) __entry->goal, 5849bffad1eSTheodore Ts'o (unsigned long long) __entry->lleft, 5859bffad1eSTheodore Ts'o (unsigned long long) __entry->lright, 5869bffad1eSTheodore Ts'o (unsigned long long) __entry->pleft, 5879bffad1eSTheodore Ts'o (unsigned long long) __entry->pright) 5889bffad1eSTheodore Ts'o ); 5899bffad1eSTheodore Ts'o 5909bffad1eSTheodore Ts'o TRACE_EVENT(ext4_free_blocks, 5919bffad1eSTheodore Ts'o TP_PROTO(struct inode *inode, __u64 block, unsigned long count, 592e6362609STheodore Ts'o int flags), 5939bffad1eSTheodore Ts'o 594e6362609STheodore Ts'o TP_ARGS(inode, block, count, flags), 5959bffad1eSTheodore Ts'o 5969bffad1eSTheodore Ts'o TP_STRUCT__entry( 5979bffad1eSTheodore Ts'o __field( dev_t, dev ) 5989bffad1eSTheodore Ts'o __field( ino_t, ino ) 599e6362609STheodore Ts'o __field( umode_t, mode ) 6009bffad1eSTheodore Ts'o __field( __u64, block ) 6019bffad1eSTheodore Ts'o __field( unsigned long, count ) 602e6362609STheodore Ts'o __field( int, flags ) 6039bffad1eSTheodore Ts'o ), 6049bffad1eSTheodore Ts'o 6059bffad1eSTheodore Ts'o TP_fast_assign( 6069bffad1eSTheodore Ts'o __entry->dev = inode->i_sb->s_dev; 6079bffad1eSTheodore Ts'o __entry->ino = inode->i_ino; 608e6362609STheodore Ts'o __entry->mode = inode->i_mode; 6099bffad1eSTheodore Ts'o __entry->block = block; 6109bffad1eSTheodore Ts'o __entry->count = count; 611e6362609STheodore Ts'o __entry->flags = flags; 6129bffad1eSTheodore Ts'o ), 6139bffad1eSTheodore Ts'o 614e6362609STheodore Ts'o TP_printk("dev %s ino %lu mode 0%o block %llu count %lu flags %d", 615a3710fd1STheodore Ts'o jbd2_dev_to_name(__entry->dev), (unsigned long) __entry->ino, 616e6362609STheodore Ts'o __entry->mode, __entry->block, __entry->count, 617e6362609STheodore Ts'o __entry->flags) 6189bffad1eSTheodore Ts'o ); 6199bffad1eSTheodore Ts'o 6209bffad1eSTheodore Ts'o TRACE_EVENT(ext4_sync_file, 6219bffad1eSTheodore Ts'o TP_PROTO(struct file *file, struct dentry *dentry, int datasync), 6229bffad1eSTheodore Ts'o 6239bffad1eSTheodore Ts'o TP_ARGS(file, dentry, datasync), 6249bffad1eSTheodore Ts'o 6259bffad1eSTheodore Ts'o TP_STRUCT__entry( 6269bffad1eSTheodore Ts'o __field( dev_t, dev ) 6279bffad1eSTheodore Ts'o __field( ino_t, ino ) 6289bffad1eSTheodore Ts'o __field( ino_t, parent ) 6299bffad1eSTheodore Ts'o __field( int, datasync ) 6309bffad1eSTheodore Ts'o ), 6319bffad1eSTheodore Ts'o 6329bffad1eSTheodore Ts'o TP_fast_assign( 6339bffad1eSTheodore Ts'o __entry->dev = dentry->d_inode->i_sb->s_dev; 6349bffad1eSTheodore Ts'o __entry->ino = dentry->d_inode->i_ino; 6359bffad1eSTheodore Ts'o __entry->datasync = datasync; 6369bffad1eSTheodore Ts'o __entry->parent = dentry->d_parent->d_inode->i_ino; 6379bffad1eSTheodore Ts'o ), 6389bffad1eSTheodore Ts'o 6399bffad1eSTheodore Ts'o TP_printk("dev %s ino %ld parent %ld datasync %d ", 640a3710fd1STheodore Ts'o jbd2_dev_to_name(__entry->dev), (unsigned long) __entry->ino, 641a3710fd1STheodore Ts'o (unsigned long) __entry->parent, __entry->datasync) 6429bffad1eSTheodore Ts'o ); 6439bffad1eSTheodore Ts'o 6449bffad1eSTheodore Ts'o TRACE_EVENT(ext4_sync_fs, 6459bffad1eSTheodore Ts'o TP_PROTO(struct super_block *sb, int wait), 6469bffad1eSTheodore Ts'o 6479bffad1eSTheodore Ts'o TP_ARGS(sb, wait), 6489bffad1eSTheodore Ts'o 6499bffad1eSTheodore Ts'o TP_STRUCT__entry( 6509bffad1eSTheodore Ts'o __field( dev_t, dev ) 6519bffad1eSTheodore Ts'o __field( int, wait ) 6529bffad1eSTheodore Ts'o 6539bffad1eSTheodore Ts'o ), 6549bffad1eSTheodore Ts'o 6559bffad1eSTheodore Ts'o TP_fast_assign( 6569bffad1eSTheodore Ts'o __entry->dev = sb->s_dev; 6579bffad1eSTheodore Ts'o __entry->wait = wait; 6589bffad1eSTheodore Ts'o ), 6599bffad1eSTheodore Ts'o 6609bffad1eSTheodore Ts'o TP_printk("dev %s wait %d", jbd2_dev_to_name(__entry->dev), 6619bffad1eSTheodore Ts'o __entry->wait) 6629bffad1eSTheodore Ts'o ); 6639bffad1eSTheodore Ts'o 664fb40ba0dSTheodore Ts'o TRACE_EVENT(ext4_alloc_da_blocks, 665fb40ba0dSTheodore Ts'o TP_PROTO(struct inode *inode), 666fb40ba0dSTheodore Ts'o 667fb40ba0dSTheodore Ts'o TP_ARGS(inode), 668fb40ba0dSTheodore Ts'o 669fb40ba0dSTheodore Ts'o TP_STRUCT__entry( 670fb40ba0dSTheodore Ts'o __field( dev_t, dev ) 671fb40ba0dSTheodore Ts'o __field( ino_t, ino ) 672fb40ba0dSTheodore Ts'o __field( unsigned int, data_blocks ) 673fb40ba0dSTheodore Ts'o __field( unsigned int, meta_blocks ) 674fb40ba0dSTheodore Ts'o ), 675fb40ba0dSTheodore Ts'o 676fb40ba0dSTheodore Ts'o TP_fast_assign( 677fb40ba0dSTheodore Ts'o __entry->dev = inode->i_sb->s_dev; 678fb40ba0dSTheodore Ts'o __entry->ino = inode->i_ino; 679fb40ba0dSTheodore Ts'o __entry->data_blocks = EXT4_I(inode)->i_reserved_data_blocks; 680fb40ba0dSTheodore Ts'o __entry->meta_blocks = EXT4_I(inode)->i_reserved_meta_blocks; 681fb40ba0dSTheodore Ts'o ), 682fb40ba0dSTheodore Ts'o 683fb40ba0dSTheodore Ts'o TP_printk("dev %s ino %lu data_blocks %u meta_blocks %u", 684fb40ba0dSTheodore Ts'o jbd2_dev_to_name(__entry->dev), (unsigned long) __entry->ino, 685fb40ba0dSTheodore Ts'o __entry->data_blocks, __entry->meta_blocks) 686fb40ba0dSTheodore Ts'o ); 687fb40ba0dSTheodore Ts'o 688296c355cSTheodore Ts'o TRACE_EVENT(ext4_mballoc_alloc, 689296c355cSTheodore Ts'o TP_PROTO(struct ext4_allocation_context *ac), 690296c355cSTheodore Ts'o 691296c355cSTheodore Ts'o TP_ARGS(ac), 692296c355cSTheodore Ts'o 693296c355cSTheodore Ts'o TP_STRUCT__entry( 694296c355cSTheodore Ts'o __field( dev_t, dev ) 695296c355cSTheodore Ts'o __field( ino_t, ino ) 696296c355cSTheodore Ts'o __field( __u16, found ) 697296c355cSTheodore Ts'o __field( __u16, groups ) 698296c355cSTheodore Ts'o __field( __u16, buddy ) 699296c355cSTheodore Ts'o __field( __u16, flags ) 700296c355cSTheodore Ts'o __field( __u16, tail ) 701296c355cSTheodore Ts'o __field( __u8, cr ) 702296c355cSTheodore Ts'o __field( __u32, orig_logical ) 703296c355cSTheodore Ts'o __field( int, orig_start ) 704296c355cSTheodore Ts'o __field( __u32, orig_group ) 705296c355cSTheodore Ts'o __field( int, orig_len ) 706296c355cSTheodore Ts'o __field( __u32, goal_logical ) 707296c355cSTheodore Ts'o __field( int, goal_start ) 708296c355cSTheodore Ts'o __field( __u32, goal_group ) 709296c355cSTheodore Ts'o __field( int, goal_len ) 710296c355cSTheodore Ts'o __field( __u32, result_logical ) 711296c355cSTheodore Ts'o __field( int, result_start ) 712296c355cSTheodore Ts'o __field( __u32, result_group ) 713296c355cSTheodore Ts'o __field( int, result_len ) 714296c355cSTheodore Ts'o ), 715296c355cSTheodore Ts'o 716296c355cSTheodore Ts'o TP_fast_assign( 717296c355cSTheodore Ts'o __entry->dev = ac->ac_inode->i_sb->s_dev; 718296c355cSTheodore Ts'o __entry->ino = ac->ac_inode->i_ino; 719296c355cSTheodore Ts'o __entry->found = ac->ac_found; 720296c355cSTheodore Ts'o __entry->flags = ac->ac_flags; 721296c355cSTheodore Ts'o __entry->groups = ac->ac_groups_scanned; 722296c355cSTheodore Ts'o __entry->buddy = ac->ac_buddy; 723296c355cSTheodore Ts'o __entry->tail = ac->ac_tail; 724296c355cSTheodore Ts'o __entry->cr = ac->ac_criteria; 725296c355cSTheodore Ts'o __entry->orig_logical = ac->ac_o_ex.fe_logical; 726296c355cSTheodore Ts'o __entry->orig_start = ac->ac_o_ex.fe_start; 727296c355cSTheodore Ts'o __entry->orig_group = ac->ac_o_ex.fe_group; 728296c355cSTheodore Ts'o __entry->orig_len = ac->ac_o_ex.fe_len; 729296c355cSTheodore Ts'o __entry->goal_logical = ac->ac_g_ex.fe_logical; 730296c355cSTheodore Ts'o __entry->goal_start = ac->ac_g_ex.fe_start; 731296c355cSTheodore Ts'o __entry->goal_group = ac->ac_g_ex.fe_group; 732296c355cSTheodore Ts'o __entry->goal_len = ac->ac_g_ex.fe_len; 733296c355cSTheodore Ts'o __entry->result_logical = ac->ac_f_ex.fe_logical; 734296c355cSTheodore Ts'o __entry->result_start = ac->ac_f_ex.fe_start; 735296c355cSTheodore Ts'o __entry->result_group = ac->ac_f_ex.fe_group; 736296c355cSTheodore Ts'o __entry->result_len = ac->ac_f_ex.fe_len; 737296c355cSTheodore Ts'o ), 738296c355cSTheodore Ts'o 739296c355cSTheodore Ts'o TP_printk("dev %s inode %lu orig %u/%d/%u@%u goal %u/%d/%u@%u " 740296c355cSTheodore Ts'o "result %u/%d/%u@%u blks %u grps %u cr %u flags 0x%04x " 741296c355cSTheodore Ts'o "tail %u broken %u", 742296c355cSTheodore Ts'o jbd2_dev_to_name(__entry->dev), (unsigned long) __entry->ino, 743296c355cSTheodore Ts'o __entry->orig_group, __entry->orig_start, 744296c355cSTheodore Ts'o __entry->orig_len, __entry->orig_logical, 745296c355cSTheodore Ts'o __entry->goal_group, __entry->goal_start, 746296c355cSTheodore Ts'o __entry->goal_len, __entry->goal_logical, 747296c355cSTheodore Ts'o __entry->result_group, __entry->result_start, 748296c355cSTheodore Ts'o __entry->result_len, __entry->result_logical, 749296c355cSTheodore Ts'o __entry->found, __entry->groups, __entry->cr, 750296c355cSTheodore Ts'o __entry->flags, __entry->tail, 751296c355cSTheodore Ts'o __entry->buddy ? 1 << __entry->buddy : 0) 752296c355cSTheodore Ts'o ); 753296c355cSTheodore Ts'o 754296c355cSTheodore Ts'o TRACE_EVENT(ext4_mballoc_prealloc, 755296c355cSTheodore Ts'o TP_PROTO(struct ext4_allocation_context *ac), 756296c355cSTheodore Ts'o 757296c355cSTheodore Ts'o TP_ARGS(ac), 758296c355cSTheodore Ts'o 759296c355cSTheodore Ts'o TP_STRUCT__entry( 760296c355cSTheodore Ts'o __field( dev_t, dev ) 761296c355cSTheodore Ts'o __field( ino_t, ino ) 762296c355cSTheodore Ts'o __field( __u32, orig_logical ) 763296c355cSTheodore Ts'o __field( int, orig_start ) 764296c355cSTheodore Ts'o __field( __u32, orig_group ) 765296c355cSTheodore Ts'o __field( int, orig_len ) 766296c355cSTheodore Ts'o __field( __u32, result_logical ) 767296c355cSTheodore Ts'o __field( int, result_start ) 768296c355cSTheodore Ts'o __field( __u32, result_group ) 769296c355cSTheodore Ts'o __field( int, result_len ) 770296c355cSTheodore Ts'o ), 771296c355cSTheodore Ts'o 772296c355cSTheodore Ts'o TP_fast_assign( 773296c355cSTheodore Ts'o __entry->dev = ac->ac_inode->i_sb->s_dev; 774296c355cSTheodore Ts'o __entry->ino = ac->ac_inode->i_ino; 775296c355cSTheodore Ts'o __entry->orig_logical = ac->ac_o_ex.fe_logical; 776296c355cSTheodore Ts'o __entry->orig_start = ac->ac_o_ex.fe_start; 777296c355cSTheodore Ts'o __entry->orig_group = ac->ac_o_ex.fe_group; 778296c355cSTheodore Ts'o __entry->orig_len = ac->ac_o_ex.fe_len; 779296c355cSTheodore Ts'o __entry->result_logical = ac->ac_b_ex.fe_logical; 780296c355cSTheodore Ts'o __entry->result_start = ac->ac_b_ex.fe_start; 781296c355cSTheodore Ts'o __entry->result_group = ac->ac_b_ex.fe_group; 782296c355cSTheodore Ts'o __entry->result_len = ac->ac_b_ex.fe_len; 783296c355cSTheodore Ts'o ), 784296c355cSTheodore Ts'o 785296c355cSTheodore Ts'o TP_printk("dev %s inode %lu orig %u/%d/%u@%u result %u/%d/%u@%u", 786296c355cSTheodore Ts'o jbd2_dev_to_name(__entry->dev), (unsigned long) __entry->ino, 787296c355cSTheodore Ts'o __entry->orig_group, __entry->orig_start, 788296c355cSTheodore Ts'o __entry->orig_len, __entry->orig_logical, 789296c355cSTheodore Ts'o __entry->result_group, __entry->result_start, 790296c355cSTheodore Ts'o __entry->result_len, __entry->result_logical) 791296c355cSTheodore Ts'o ); 792296c355cSTheodore Ts'o 793296c355cSTheodore Ts'o TRACE_EVENT(ext4_mballoc_discard, 794296c355cSTheodore Ts'o TP_PROTO(struct ext4_allocation_context *ac), 795296c355cSTheodore Ts'o 796296c355cSTheodore Ts'o TP_ARGS(ac), 797296c355cSTheodore Ts'o 798296c355cSTheodore Ts'o TP_STRUCT__entry( 799296c355cSTheodore Ts'o __field( dev_t, dev ) 800296c355cSTheodore Ts'o __field( ino_t, ino ) 801296c355cSTheodore Ts'o __field( __u32, result_logical ) 802296c355cSTheodore Ts'o __field( int, result_start ) 803296c355cSTheodore Ts'o __field( __u32, result_group ) 804296c355cSTheodore Ts'o __field( int, result_len ) 805296c355cSTheodore Ts'o ), 806296c355cSTheodore Ts'o 807296c355cSTheodore Ts'o TP_fast_assign( 808296c355cSTheodore Ts'o __entry->dev = ac->ac_inode->i_sb->s_dev; 809296c355cSTheodore Ts'o __entry->ino = ac->ac_inode->i_ino; 810296c355cSTheodore Ts'o __entry->result_logical = ac->ac_b_ex.fe_logical; 811296c355cSTheodore Ts'o __entry->result_start = ac->ac_b_ex.fe_start; 812296c355cSTheodore Ts'o __entry->result_group = ac->ac_b_ex.fe_group; 813296c355cSTheodore Ts'o __entry->result_len = ac->ac_b_ex.fe_len; 814296c355cSTheodore Ts'o ), 815296c355cSTheodore Ts'o 816296c355cSTheodore Ts'o TP_printk("dev %s inode %lu extent %u/%d/%u@%u ", 817296c355cSTheodore Ts'o jbd2_dev_to_name(__entry->dev), (unsigned long) __entry->ino, 818296c355cSTheodore Ts'o __entry->result_group, __entry->result_start, 819296c355cSTheodore Ts'o __entry->result_len, __entry->result_logical) 820296c355cSTheodore Ts'o ); 821296c355cSTheodore Ts'o 822296c355cSTheodore Ts'o TRACE_EVENT(ext4_mballoc_free, 823296c355cSTheodore Ts'o TP_PROTO(struct ext4_allocation_context *ac), 824296c355cSTheodore Ts'o 825296c355cSTheodore Ts'o TP_ARGS(ac), 826296c355cSTheodore Ts'o 827296c355cSTheodore Ts'o TP_STRUCT__entry( 828296c355cSTheodore Ts'o __field( dev_t, dev ) 829296c355cSTheodore Ts'o __field( ino_t, ino ) 830296c355cSTheodore Ts'o __field( __u32, result_logical ) 831296c355cSTheodore Ts'o __field( int, result_start ) 832296c355cSTheodore Ts'o __field( __u32, result_group ) 833296c355cSTheodore Ts'o __field( int, result_len ) 834296c355cSTheodore Ts'o ), 835296c355cSTheodore Ts'o 836296c355cSTheodore Ts'o TP_fast_assign( 837296c355cSTheodore Ts'o __entry->dev = ac->ac_inode->i_sb->s_dev; 838296c355cSTheodore Ts'o __entry->ino = ac->ac_inode->i_ino; 839296c355cSTheodore Ts'o __entry->result_logical = ac->ac_b_ex.fe_logical; 840296c355cSTheodore Ts'o __entry->result_start = ac->ac_b_ex.fe_start; 841296c355cSTheodore Ts'o __entry->result_group = ac->ac_b_ex.fe_group; 842296c355cSTheodore Ts'o __entry->result_len = ac->ac_b_ex.fe_len; 843296c355cSTheodore Ts'o ), 844296c355cSTheodore Ts'o 845296c355cSTheodore Ts'o TP_printk("dev %s inode %lu extent %u/%d/%u@%u ", 846296c355cSTheodore Ts'o jbd2_dev_to_name(__entry->dev), (unsigned long) __entry->ino, 847296c355cSTheodore Ts'o __entry->result_group, __entry->result_start, 848296c355cSTheodore Ts'o __entry->result_len, __entry->result_logical) 849296c355cSTheodore Ts'o ); 850296c355cSTheodore Ts'o 851beac2da7STheodore Ts'o TRACE_EVENT(ext4_forget, 852beac2da7STheodore Ts'o TP_PROTO(struct inode *inode, int is_metadata, __u64 block), 853beac2da7STheodore Ts'o 854beac2da7STheodore Ts'o TP_ARGS(inode, is_metadata, block), 855beac2da7STheodore Ts'o 856beac2da7STheodore Ts'o TP_STRUCT__entry( 857beac2da7STheodore Ts'o __field( dev_t, dev ) 858beac2da7STheodore Ts'o __field( ino_t, ino ) 859beac2da7STheodore Ts'o __field( umode_t, mode ) 860beac2da7STheodore Ts'o __field( int, is_metadata ) 861beac2da7STheodore Ts'o __field( __u64, block ) 862beac2da7STheodore Ts'o ), 863beac2da7STheodore Ts'o 864beac2da7STheodore Ts'o TP_fast_assign( 865beac2da7STheodore Ts'o __entry->dev = inode->i_sb->s_dev; 866beac2da7STheodore Ts'o __entry->ino = inode->i_ino; 867beac2da7STheodore Ts'o __entry->mode = inode->i_mode; 868beac2da7STheodore Ts'o __entry->is_metadata = is_metadata; 869beac2da7STheodore Ts'o __entry->block = block; 870beac2da7STheodore Ts'o ), 871beac2da7STheodore Ts'o 8726eebee62STheodore Ts'o TP_printk("dev %s ino %lu mode 0%o is_metadata %d block %llu", 873beac2da7STheodore Ts'o jbd2_dev_to_name(__entry->dev), (unsigned long) __entry->ino, 874beac2da7STheodore Ts'o __entry->mode, __entry->is_metadata, __entry->block) 875beac2da7STheodore Ts'o ); 876beac2da7STheodore Ts'o 877f8ec9d68STheodore Ts'o TRACE_EVENT(ext4_da_update_reserve_space, 878f8ec9d68STheodore Ts'o TP_PROTO(struct inode *inode, int used_blocks), 879f8ec9d68STheodore Ts'o 880f8ec9d68STheodore Ts'o TP_ARGS(inode, used_blocks), 881f8ec9d68STheodore Ts'o 882f8ec9d68STheodore Ts'o TP_STRUCT__entry( 883f8ec9d68STheodore Ts'o __field( dev_t, dev ) 884f8ec9d68STheodore Ts'o __field( ino_t, ino ) 885f8ec9d68STheodore Ts'o __field( umode_t, mode ) 886f8ec9d68STheodore Ts'o __field( __u64, i_blocks ) 887f8ec9d68STheodore Ts'o __field( int, used_blocks ) 888f8ec9d68STheodore Ts'o __field( int, reserved_data_blocks ) 889f8ec9d68STheodore Ts'o __field( int, reserved_meta_blocks ) 890f8ec9d68STheodore Ts'o __field( int, allocated_meta_blocks ) 891f8ec9d68STheodore Ts'o ), 892f8ec9d68STheodore Ts'o 893f8ec9d68STheodore Ts'o TP_fast_assign( 894f8ec9d68STheodore Ts'o __entry->dev = inode->i_sb->s_dev; 895f8ec9d68STheodore Ts'o __entry->ino = inode->i_ino; 896f8ec9d68STheodore Ts'o __entry->mode = inode->i_mode; 897f8ec9d68STheodore Ts'o __entry->i_blocks = inode->i_blocks; 898f8ec9d68STheodore Ts'o __entry->used_blocks = used_blocks; 899f8ec9d68STheodore Ts'o __entry->reserved_data_blocks = EXT4_I(inode)->i_reserved_data_blocks; 900f8ec9d68STheodore Ts'o __entry->reserved_meta_blocks = EXT4_I(inode)->i_reserved_meta_blocks; 901f8ec9d68STheodore Ts'o __entry->allocated_meta_blocks = EXT4_I(inode)->i_allocated_meta_blocks; 902f8ec9d68STheodore Ts'o ), 903f8ec9d68STheodore Ts'o 904f8ec9d68STheodore Ts'o TP_printk("dev %s ino %lu mode 0%o i_blocks %llu used_blocks %d reserved_data_blocks %d reserved_meta_blocks %d allocated_meta_blocks %d", 905f8ec9d68STheodore Ts'o jbd2_dev_to_name(__entry->dev), (unsigned long) __entry->ino, 906f8ec9d68STheodore Ts'o __entry->mode, (unsigned long long) __entry->i_blocks, 907f8ec9d68STheodore Ts'o __entry->used_blocks, __entry->reserved_data_blocks, 908f8ec9d68STheodore Ts'o __entry->reserved_meta_blocks, __entry->allocated_meta_blocks) 909f8ec9d68STheodore Ts'o ); 910f8ec9d68STheodore Ts'o 911f8ec9d68STheodore Ts'o TRACE_EVENT(ext4_da_reserve_space, 912f8ec9d68STheodore Ts'o TP_PROTO(struct inode *inode, int md_needed), 913f8ec9d68STheodore Ts'o 914f8ec9d68STheodore Ts'o TP_ARGS(inode, md_needed), 915f8ec9d68STheodore Ts'o 916f8ec9d68STheodore Ts'o TP_STRUCT__entry( 917f8ec9d68STheodore Ts'o __field( dev_t, dev ) 918f8ec9d68STheodore Ts'o __field( ino_t, ino ) 919f8ec9d68STheodore Ts'o __field( umode_t, mode ) 920f8ec9d68STheodore Ts'o __field( __u64, i_blocks ) 921f8ec9d68STheodore Ts'o __field( int, md_needed ) 922f8ec9d68STheodore Ts'o __field( int, reserved_data_blocks ) 923f8ec9d68STheodore Ts'o __field( int, reserved_meta_blocks ) 924f8ec9d68STheodore Ts'o ), 925f8ec9d68STheodore Ts'o 926f8ec9d68STheodore Ts'o TP_fast_assign( 927f8ec9d68STheodore Ts'o __entry->dev = inode->i_sb->s_dev; 928f8ec9d68STheodore Ts'o __entry->ino = inode->i_ino; 929f8ec9d68STheodore Ts'o __entry->mode = inode->i_mode; 930f8ec9d68STheodore Ts'o __entry->i_blocks = inode->i_blocks; 931f8ec9d68STheodore Ts'o __entry->md_needed = md_needed; 932f8ec9d68STheodore Ts'o __entry->reserved_data_blocks = EXT4_I(inode)->i_reserved_data_blocks; 933f8ec9d68STheodore Ts'o __entry->reserved_meta_blocks = EXT4_I(inode)->i_reserved_meta_blocks; 934f8ec9d68STheodore Ts'o ), 935f8ec9d68STheodore Ts'o 936f8ec9d68STheodore Ts'o TP_printk("dev %s ino %lu mode 0%o i_blocks %llu md_needed %d reserved_data_blocks %d reserved_meta_blocks %d", 937f8ec9d68STheodore Ts'o jbd2_dev_to_name(__entry->dev), (unsigned long) __entry->ino, 938f8ec9d68STheodore Ts'o __entry->mode, (unsigned long long) __entry->i_blocks, 939f8ec9d68STheodore Ts'o __entry->md_needed, __entry->reserved_data_blocks, 940f8ec9d68STheodore Ts'o __entry->reserved_meta_blocks) 941f8ec9d68STheodore Ts'o ); 942f8ec9d68STheodore Ts'o 943f8ec9d68STheodore Ts'o TRACE_EVENT(ext4_da_release_space, 944f8ec9d68STheodore Ts'o TP_PROTO(struct inode *inode, int freed_blocks), 945f8ec9d68STheodore Ts'o 946f8ec9d68STheodore Ts'o TP_ARGS(inode, freed_blocks), 947f8ec9d68STheodore Ts'o 948f8ec9d68STheodore Ts'o TP_STRUCT__entry( 949f8ec9d68STheodore Ts'o __field( dev_t, dev ) 950f8ec9d68STheodore Ts'o __field( ino_t, ino ) 951f8ec9d68STheodore Ts'o __field( umode_t, mode ) 952f8ec9d68STheodore Ts'o __field( __u64, i_blocks ) 953f8ec9d68STheodore Ts'o __field( int, freed_blocks ) 954f8ec9d68STheodore Ts'o __field( int, reserved_data_blocks ) 955f8ec9d68STheodore Ts'o __field( int, reserved_meta_blocks ) 956f8ec9d68STheodore Ts'o __field( int, allocated_meta_blocks ) 957f8ec9d68STheodore Ts'o ), 958f8ec9d68STheodore Ts'o 959f8ec9d68STheodore Ts'o TP_fast_assign( 960f8ec9d68STheodore Ts'o __entry->dev = inode->i_sb->s_dev; 961f8ec9d68STheodore Ts'o __entry->ino = inode->i_ino; 962f8ec9d68STheodore Ts'o __entry->mode = inode->i_mode; 963f8ec9d68STheodore Ts'o __entry->i_blocks = inode->i_blocks; 964f8ec9d68STheodore Ts'o __entry->freed_blocks = freed_blocks; 965f8ec9d68STheodore Ts'o __entry->reserved_data_blocks = EXT4_I(inode)->i_reserved_data_blocks; 966f8ec9d68STheodore Ts'o __entry->reserved_meta_blocks = EXT4_I(inode)->i_reserved_meta_blocks; 967f8ec9d68STheodore Ts'o __entry->allocated_meta_blocks = EXT4_I(inode)->i_allocated_meta_blocks; 968f8ec9d68STheodore Ts'o ), 969f8ec9d68STheodore Ts'o 970f8ec9d68STheodore Ts'o TP_printk("dev %s ino %lu mode 0%o i_blocks %llu freed_blocks %d reserved_data_blocks %d reserved_meta_blocks %d allocated_meta_blocks %d", 971f8ec9d68STheodore Ts'o jbd2_dev_to_name(__entry->dev), (unsigned long) __entry->ino, 972f8ec9d68STheodore Ts'o __entry->mode, (unsigned long long) __entry->i_blocks, 973f8ec9d68STheodore Ts'o __entry->freed_blocks, __entry->reserved_data_blocks, 974f8ec9d68STheodore Ts'o __entry->reserved_meta_blocks, __entry->allocated_meta_blocks) 975f8ec9d68STheodore Ts'o ); 976f8ec9d68STheodore Ts'o 977f307333eSTheodore Ts'o DECLARE_EVENT_CLASS(ext4__bitmap_load, 978f307333eSTheodore Ts'o TP_PROTO(struct super_block *sb, unsigned long group), 979f307333eSTheodore Ts'o 980f307333eSTheodore Ts'o TP_ARGS(sb, group), 981f307333eSTheodore Ts'o 982f307333eSTheodore Ts'o TP_STRUCT__entry( 983f307333eSTheodore Ts'o __field( dev_t, dev ) 984f307333eSTheodore Ts'o __field( __u32, group ) 985f307333eSTheodore Ts'o 986f307333eSTheodore Ts'o ), 987f307333eSTheodore Ts'o 988f307333eSTheodore Ts'o TP_fast_assign( 989f307333eSTheodore Ts'o __entry->dev = sb->s_dev; 990f307333eSTheodore Ts'o __entry->group = group; 991f307333eSTheodore Ts'o ), 992f307333eSTheodore Ts'o 993f307333eSTheodore Ts'o TP_printk("dev %s group %u", 994f307333eSTheodore Ts'o jbd2_dev_to_name(__entry->dev), __entry->group) 995f307333eSTheodore Ts'o ); 996f307333eSTheodore Ts'o 997f307333eSTheodore Ts'o DEFINE_EVENT(ext4__bitmap_load, ext4_mb_bitmap_load, 998f307333eSTheodore Ts'o 999f307333eSTheodore Ts'o TP_PROTO(struct super_block *sb, unsigned long group), 1000f307333eSTheodore Ts'o 1001f307333eSTheodore Ts'o TP_ARGS(sb, group) 1002f307333eSTheodore Ts'o ); 1003f307333eSTheodore Ts'o 1004f307333eSTheodore Ts'o DEFINE_EVENT(ext4__bitmap_load, ext4_mb_buddy_bitmap_load, 1005f307333eSTheodore Ts'o 1006f307333eSTheodore Ts'o TP_PROTO(struct super_block *sb, unsigned long group), 1007f307333eSTheodore Ts'o 1008f307333eSTheodore Ts'o TP_ARGS(sb, group) 1009f307333eSTheodore Ts'o ); 1010f8ec9d68STheodore Ts'o 10119bffad1eSTheodore Ts'o #endif /* _TRACE_EXT4_H */ 10129bffad1eSTheodore Ts'o 10139bffad1eSTheodore Ts'o /* This part must be outside protection */ 10149bffad1eSTheodore Ts'o #include <trace/define_trace.h> 1015