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 419bffad1eSTheodore Ts'o TP_printk("dev %s ino %lu mode %d 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 649bffad1eSTheodore Ts'o TP_printk("dev %s dir %lu mode %d", 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 889bffad1eSTheodore Ts'o TP_printk("dev %s ino %lu dir %lu mode %d", 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 939bffad1eSTheodore Ts'o TRACE_EVENT(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 1219bffad1eSTheodore Ts'o TRACE_EVENT(ext4_ordered_write_end, 1229bffad1eSTheodore Ts'o TP_PROTO(struct inode *inode, loff_t pos, unsigned int len, 1239bffad1eSTheodore Ts'o unsigned int copied), 1249bffad1eSTheodore Ts'o 1259bffad1eSTheodore Ts'o TP_ARGS(inode, pos, len, copied), 1269bffad1eSTheodore Ts'o 1279bffad1eSTheodore Ts'o TP_STRUCT__entry( 1289bffad1eSTheodore Ts'o __field( dev_t, dev ) 1299bffad1eSTheodore Ts'o __field( ino_t, ino ) 1309bffad1eSTheodore Ts'o __field( loff_t, pos ) 1319bffad1eSTheodore Ts'o __field( unsigned int, len ) 1329bffad1eSTheodore Ts'o __field( unsigned int, copied ) 1339bffad1eSTheodore Ts'o ), 1349bffad1eSTheodore Ts'o 1359bffad1eSTheodore Ts'o TP_fast_assign( 1369bffad1eSTheodore Ts'o __entry->dev = inode->i_sb->s_dev; 1379bffad1eSTheodore Ts'o __entry->ino = inode->i_ino; 1389bffad1eSTheodore Ts'o __entry->pos = pos; 1399bffad1eSTheodore Ts'o __entry->len = len; 1409bffad1eSTheodore Ts'o __entry->copied = copied; 1419bffad1eSTheodore Ts'o ), 1429bffad1eSTheodore Ts'o 1439bffad1eSTheodore Ts'o TP_printk("dev %s ino %lu pos %llu len %u copied %u", 144a3710fd1STheodore Ts'o jbd2_dev_to_name(__entry->dev), (unsigned long) __entry->ino, 145a3710fd1STheodore Ts'o __entry->pos, __entry->len, __entry->copied) 1469bffad1eSTheodore Ts'o ); 1479bffad1eSTheodore Ts'o 1489bffad1eSTheodore Ts'o TRACE_EVENT(ext4_writeback_write_end, 1499bffad1eSTheodore Ts'o TP_PROTO(struct inode *inode, loff_t pos, unsigned int len, 1509bffad1eSTheodore Ts'o unsigned int copied), 1519bffad1eSTheodore Ts'o 1529bffad1eSTheodore Ts'o TP_ARGS(inode, pos, len, copied), 1539bffad1eSTheodore Ts'o 1549bffad1eSTheodore Ts'o TP_STRUCT__entry( 1559bffad1eSTheodore Ts'o __field( dev_t, dev ) 1569bffad1eSTheodore Ts'o __field( ino_t, ino ) 1579bffad1eSTheodore Ts'o __field( loff_t, pos ) 1589bffad1eSTheodore Ts'o __field( unsigned int, len ) 1599bffad1eSTheodore Ts'o __field( unsigned int, copied ) 1609bffad1eSTheodore Ts'o ), 1619bffad1eSTheodore Ts'o 1629bffad1eSTheodore Ts'o TP_fast_assign( 1639bffad1eSTheodore Ts'o __entry->dev = inode->i_sb->s_dev; 1649bffad1eSTheodore Ts'o __entry->ino = inode->i_ino; 1659bffad1eSTheodore Ts'o __entry->pos = pos; 1669bffad1eSTheodore Ts'o __entry->len = len; 1679bffad1eSTheodore Ts'o __entry->copied = copied; 1689bffad1eSTheodore Ts'o ), 1699bffad1eSTheodore Ts'o 1709bffad1eSTheodore Ts'o TP_printk("dev %s ino %lu pos %llu len %u copied %u", 171a3710fd1STheodore Ts'o jbd2_dev_to_name(__entry->dev), (unsigned long) __entry->ino, 172a3710fd1STheodore Ts'o __entry->pos, __entry->len, __entry->copied) 1739bffad1eSTheodore Ts'o ); 1749bffad1eSTheodore Ts'o 1759bffad1eSTheodore Ts'o TRACE_EVENT(ext4_journalled_write_end, 1769bffad1eSTheodore Ts'o TP_PROTO(struct inode *inode, loff_t pos, unsigned int len, 1779bffad1eSTheodore Ts'o unsigned int copied), 1789bffad1eSTheodore Ts'o TP_ARGS(inode, pos, len, copied), 1799bffad1eSTheodore Ts'o 1809bffad1eSTheodore Ts'o TP_STRUCT__entry( 1819bffad1eSTheodore Ts'o __field( dev_t, dev ) 1829bffad1eSTheodore Ts'o __field( ino_t, ino ) 1839bffad1eSTheodore Ts'o __field( loff_t, pos ) 1849bffad1eSTheodore Ts'o __field( unsigned int, len ) 1859bffad1eSTheodore Ts'o __field( unsigned int, copied ) 1869bffad1eSTheodore Ts'o ), 1879bffad1eSTheodore Ts'o 1889bffad1eSTheodore Ts'o TP_fast_assign( 1899bffad1eSTheodore Ts'o __entry->dev = inode->i_sb->s_dev; 1909bffad1eSTheodore Ts'o __entry->ino = inode->i_ino; 1919bffad1eSTheodore Ts'o __entry->pos = pos; 1929bffad1eSTheodore Ts'o __entry->len = len; 1939bffad1eSTheodore Ts'o __entry->copied = copied; 1949bffad1eSTheodore Ts'o ), 1959bffad1eSTheodore Ts'o 1969bffad1eSTheodore Ts'o TP_printk("dev %s ino %lu pos %llu len %u copied %u", 197a3710fd1STheodore Ts'o jbd2_dev_to_name(__entry->dev), (unsigned long) __entry->ino, 198a3710fd1STheodore Ts'o __entry->pos, __entry->len, __entry->copied) 1999bffad1eSTheodore Ts'o ); 2009bffad1eSTheodore Ts'o 20143ce1d23SAneesh Kumar K.V TRACE_EVENT(ext4_writepage, 2029bffad1eSTheodore Ts'o TP_PROTO(struct inode *inode, struct page *page), 2039bffad1eSTheodore Ts'o 2049bffad1eSTheodore Ts'o TP_ARGS(inode, page), 2059bffad1eSTheodore Ts'o 2069bffad1eSTheodore Ts'o TP_STRUCT__entry( 2079bffad1eSTheodore Ts'o __field( dev_t, dev ) 2089bffad1eSTheodore Ts'o __field( ino_t, ino ) 2099bffad1eSTheodore Ts'o __field( pgoff_t, index ) 2109bffad1eSTheodore Ts'o 2119bffad1eSTheodore Ts'o ), 2129bffad1eSTheodore Ts'o 2139bffad1eSTheodore Ts'o TP_fast_assign( 2149bffad1eSTheodore Ts'o __entry->dev = inode->i_sb->s_dev; 2159bffad1eSTheodore Ts'o __entry->ino = inode->i_ino; 2169bffad1eSTheodore Ts'o __entry->index = page->index; 2179bffad1eSTheodore Ts'o ), 2189bffad1eSTheodore Ts'o 2199bffad1eSTheodore Ts'o TP_printk("dev %s ino %lu page_index %lu", 220a3710fd1STheodore Ts'o jbd2_dev_to_name(__entry->dev), (unsigned long) __entry->ino, 221a3710fd1STheodore Ts'o __entry->index) 2229bffad1eSTheodore Ts'o ); 2239bffad1eSTheodore Ts'o 2249bffad1eSTheodore Ts'o TRACE_EVENT(ext4_da_writepages, 2259bffad1eSTheodore Ts'o TP_PROTO(struct inode *inode, struct writeback_control *wbc), 2269bffad1eSTheodore Ts'o 2279bffad1eSTheodore Ts'o TP_ARGS(inode, wbc), 2289bffad1eSTheodore Ts'o 2299bffad1eSTheodore Ts'o TP_STRUCT__entry( 2309bffad1eSTheodore Ts'o __field( dev_t, dev ) 2319bffad1eSTheodore Ts'o __field( ino_t, ino ) 2329bffad1eSTheodore Ts'o __field( long, nr_to_write ) 2339bffad1eSTheodore Ts'o __field( long, pages_skipped ) 2349bffad1eSTheodore Ts'o __field( loff_t, range_start ) 2359bffad1eSTheodore Ts'o __field( loff_t, range_end ) 2369bffad1eSTheodore Ts'o __field( char, nonblocking ) 2379bffad1eSTheodore Ts'o __field( char, for_kupdate ) 2389bffad1eSTheodore Ts'o __field( char, for_reclaim ) 2399bffad1eSTheodore Ts'o __field( char, range_cyclic ) 24055138e0bSTheodore Ts'o __field( pgoff_t, writeback_index ) 2419bffad1eSTheodore Ts'o ), 2429bffad1eSTheodore Ts'o 2439bffad1eSTheodore Ts'o TP_fast_assign( 2449bffad1eSTheodore Ts'o __entry->dev = inode->i_sb->s_dev; 2459bffad1eSTheodore Ts'o __entry->ino = inode->i_ino; 2469bffad1eSTheodore Ts'o __entry->nr_to_write = wbc->nr_to_write; 2479bffad1eSTheodore Ts'o __entry->pages_skipped = wbc->pages_skipped; 2489bffad1eSTheodore Ts'o __entry->range_start = wbc->range_start; 2499bffad1eSTheodore Ts'o __entry->range_end = wbc->range_end; 2509bffad1eSTheodore Ts'o __entry->nonblocking = wbc->nonblocking; 2519bffad1eSTheodore Ts'o __entry->for_kupdate = wbc->for_kupdate; 2529bffad1eSTheodore Ts'o __entry->for_reclaim = wbc->for_reclaim; 2539bffad1eSTheodore Ts'o __entry->range_cyclic = wbc->range_cyclic; 25455138e0bSTheodore Ts'o __entry->writeback_index = inode->i_mapping->writeback_index; 2559bffad1eSTheodore Ts'o ), 2569bffad1eSTheodore Ts'o 25755138e0bSTheodore 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", 258a3710fd1STheodore Ts'o jbd2_dev_to_name(__entry->dev), 259a3710fd1STheodore Ts'o (unsigned long) __entry->ino, __entry->nr_to_write, 2609bffad1eSTheodore Ts'o __entry->pages_skipped, __entry->range_start, 2619bffad1eSTheodore Ts'o __entry->range_end, __entry->nonblocking, 2629bffad1eSTheodore Ts'o __entry->for_kupdate, __entry->for_reclaim, 26355138e0bSTheodore Ts'o __entry->range_cyclic, 26455138e0bSTheodore Ts'o (unsigned long) __entry->writeback_index) 2659bffad1eSTheodore Ts'o ); 2669bffad1eSTheodore Ts'o 267b3a3ca8cSTheodore Ts'o TRACE_EVENT(ext4_da_write_pages, 268b3a3ca8cSTheodore Ts'o TP_PROTO(struct inode *inode, struct mpage_da_data *mpd), 269b3a3ca8cSTheodore Ts'o 270b3a3ca8cSTheodore Ts'o TP_ARGS(inode, mpd), 271b3a3ca8cSTheodore Ts'o 272b3a3ca8cSTheodore Ts'o TP_STRUCT__entry( 273b3a3ca8cSTheodore Ts'o __field( dev_t, dev ) 274b3a3ca8cSTheodore Ts'o __field( ino_t, ino ) 275b3a3ca8cSTheodore Ts'o __field( __u64, b_blocknr ) 276b3a3ca8cSTheodore Ts'o __field( __u32, b_size ) 277b3a3ca8cSTheodore Ts'o __field( __u32, b_state ) 278b3a3ca8cSTheodore Ts'o __field( unsigned long, first_page ) 279b3a3ca8cSTheodore Ts'o __field( int, io_done ) 280b3a3ca8cSTheodore Ts'o __field( int, pages_written ) 281b3a3ca8cSTheodore Ts'o ), 282b3a3ca8cSTheodore Ts'o 283b3a3ca8cSTheodore Ts'o TP_fast_assign( 284b3a3ca8cSTheodore Ts'o __entry->dev = inode->i_sb->s_dev; 285b3a3ca8cSTheodore Ts'o __entry->ino = inode->i_ino; 286b3a3ca8cSTheodore Ts'o __entry->b_blocknr = mpd->b_blocknr; 287b3a3ca8cSTheodore Ts'o __entry->b_size = mpd->b_size; 288b3a3ca8cSTheodore Ts'o __entry->b_state = mpd->b_state; 289b3a3ca8cSTheodore Ts'o __entry->first_page = mpd->first_page; 290b3a3ca8cSTheodore Ts'o __entry->io_done = mpd->io_done; 291b3a3ca8cSTheodore Ts'o __entry->pages_written = mpd->pages_written; 292b3a3ca8cSTheodore Ts'o ), 293b3a3ca8cSTheodore Ts'o 294b3a3ca8cSTheodore 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", 295a3710fd1STheodore Ts'o jbd2_dev_to_name(__entry->dev), (unsigned long) __entry->ino, 296b3a3ca8cSTheodore Ts'o __entry->b_blocknr, __entry->b_size, 297b3a3ca8cSTheodore Ts'o __entry->b_state, __entry->first_page, 298b3a3ca8cSTheodore Ts'o __entry->io_done, __entry->pages_written) 299b3a3ca8cSTheodore Ts'o ); 300b3a3ca8cSTheodore Ts'o 3019bffad1eSTheodore Ts'o TRACE_EVENT(ext4_da_writepages_result, 3029bffad1eSTheodore Ts'o TP_PROTO(struct inode *inode, struct writeback_control *wbc, 3039bffad1eSTheodore Ts'o int ret, int pages_written), 3049bffad1eSTheodore Ts'o 3059bffad1eSTheodore Ts'o TP_ARGS(inode, wbc, ret, pages_written), 3069bffad1eSTheodore Ts'o 3079bffad1eSTheodore Ts'o TP_STRUCT__entry( 3089bffad1eSTheodore Ts'o __field( dev_t, dev ) 3099bffad1eSTheodore Ts'o __field( ino_t, ino ) 3109bffad1eSTheodore Ts'o __field( int, ret ) 3119bffad1eSTheodore Ts'o __field( int, pages_written ) 3129bffad1eSTheodore Ts'o __field( long, pages_skipped ) 3139bffad1eSTheodore Ts'o __field( char, encountered_congestion ) 3149bffad1eSTheodore Ts'o __field( char, more_io ) 3159bffad1eSTheodore Ts'o __field( char, no_nrwrite_index_update ) 31655138e0bSTheodore Ts'o __field( pgoff_t, writeback_index ) 3179bffad1eSTheodore Ts'o ), 3189bffad1eSTheodore Ts'o 3199bffad1eSTheodore Ts'o TP_fast_assign( 3209bffad1eSTheodore Ts'o __entry->dev = inode->i_sb->s_dev; 3219bffad1eSTheodore Ts'o __entry->ino = inode->i_ino; 3229bffad1eSTheodore Ts'o __entry->ret = ret; 3239bffad1eSTheodore Ts'o __entry->pages_written = pages_written; 3249bffad1eSTheodore Ts'o __entry->pages_skipped = wbc->pages_skipped; 3259bffad1eSTheodore Ts'o __entry->encountered_congestion = wbc->encountered_congestion; 3269bffad1eSTheodore Ts'o __entry->more_io = wbc->more_io; 3279bffad1eSTheodore Ts'o __entry->no_nrwrite_index_update = wbc->no_nrwrite_index_update; 32855138e0bSTheodore Ts'o __entry->writeback_index = inode->i_mapping->writeback_index; 3299bffad1eSTheodore Ts'o ), 3309bffad1eSTheodore Ts'o 33155138e0bSTheodore Ts'o TP_printk("dev %s ino %lu ret %d pages_written %d pages_skipped %ld congestion %d more_io %d no_nrwrite_index_update %d writeback_index %lu", 332a3710fd1STheodore Ts'o jbd2_dev_to_name(__entry->dev), 333a3710fd1STheodore Ts'o (unsigned long) __entry->ino, __entry->ret, 3349bffad1eSTheodore Ts'o __entry->pages_written, __entry->pages_skipped, 3359bffad1eSTheodore Ts'o __entry->encountered_congestion, __entry->more_io, 33655138e0bSTheodore Ts'o __entry->no_nrwrite_index_update, 33755138e0bSTheodore Ts'o (unsigned long) __entry->writeback_index) 3389bffad1eSTheodore Ts'o ); 3399bffad1eSTheodore Ts'o 3409bffad1eSTheodore Ts'o TRACE_EVENT(ext4_da_write_begin, 3419bffad1eSTheodore Ts'o TP_PROTO(struct inode *inode, loff_t pos, unsigned int len, 3429bffad1eSTheodore Ts'o unsigned int flags), 3439bffad1eSTheodore Ts'o 3449bffad1eSTheodore Ts'o TP_ARGS(inode, pos, len, flags), 3459bffad1eSTheodore Ts'o 3469bffad1eSTheodore Ts'o TP_STRUCT__entry( 3479bffad1eSTheodore Ts'o __field( dev_t, dev ) 3489bffad1eSTheodore Ts'o __field( ino_t, ino ) 3499bffad1eSTheodore Ts'o __field( loff_t, pos ) 3509bffad1eSTheodore Ts'o __field( unsigned int, len ) 3519bffad1eSTheodore Ts'o __field( unsigned int, flags ) 3529bffad1eSTheodore Ts'o ), 3539bffad1eSTheodore Ts'o 3549bffad1eSTheodore Ts'o TP_fast_assign( 3559bffad1eSTheodore Ts'o __entry->dev = inode->i_sb->s_dev; 3569bffad1eSTheodore Ts'o __entry->ino = inode->i_ino; 3579bffad1eSTheodore Ts'o __entry->pos = pos; 3589bffad1eSTheodore Ts'o __entry->len = len; 3599bffad1eSTheodore Ts'o __entry->flags = flags; 3609bffad1eSTheodore Ts'o ), 3619bffad1eSTheodore Ts'o 3629bffad1eSTheodore Ts'o TP_printk("dev %s ino %lu pos %llu len %u flags %u", 363a3710fd1STheodore Ts'o jbd2_dev_to_name(__entry->dev), (unsigned long) __entry->ino, 364a3710fd1STheodore Ts'o __entry->pos, __entry->len, __entry->flags) 3659bffad1eSTheodore Ts'o ); 3669bffad1eSTheodore Ts'o 3679bffad1eSTheodore Ts'o TRACE_EVENT(ext4_da_write_end, 3689bffad1eSTheodore Ts'o TP_PROTO(struct inode *inode, loff_t pos, unsigned int len, 3699bffad1eSTheodore Ts'o unsigned int copied), 3709bffad1eSTheodore Ts'o 3719bffad1eSTheodore Ts'o TP_ARGS(inode, pos, len, copied), 3729bffad1eSTheodore Ts'o 3739bffad1eSTheodore Ts'o TP_STRUCT__entry( 3749bffad1eSTheodore Ts'o __field( dev_t, dev ) 3759bffad1eSTheodore Ts'o __field( ino_t, ino ) 3769bffad1eSTheodore Ts'o __field( loff_t, pos ) 3779bffad1eSTheodore Ts'o __field( unsigned int, len ) 3789bffad1eSTheodore Ts'o __field( unsigned int, copied ) 3799bffad1eSTheodore Ts'o ), 3809bffad1eSTheodore Ts'o 3819bffad1eSTheodore Ts'o TP_fast_assign( 3829bffad1eSTheodore Ts'o __entry->dev = inode->i_sb->s_dev; 3839bffad1eSTheodore Ts'o __entry->ino = inode->i_ino; 3849bffad1eSTheodore Ts'o __entry->pos = pos; 3859bffad1eSTheodore Ts'o __entry->len = len; 3869bffad1eSTheodore Ts'o __entry->copied = copied; 3879bffad1eSTheodore Ts'o ), 3889bffad1eSTheodore Ts'o 3899bffad1eSTheodore Ts'o TP_printk("dev %s ino %lu pos %llu len %u copied %u", 390a3710fd1STheodore Ts'o jbd2_dev_to_name(__entry->dev), (unsigned long) __entry->ino, 391a3710fd1STheodore Ts'o __entry->pos, __entry->len, __entry->copied) 3929bffad1eSTheodore Ts'o ); 3939bffad1eSTheodore Ts'o 3949bffad1eSTheodore Ts'o TRACE_EVENT(ext4_discard_blocks, 3959bffad1eSTheodore Ts'o TP_PROTO(struct super_block *sb, unsigned long long blk, 3969bffad1eSTheodore Ts'o unsigned long long count), 3979bffad1eSTheodore Ts'o 3989bffad1eSTheodore Ts'o TP_ARGS(sb, blk, count), 3999bffad1eSTheodore Ts'o 4009bffad1eSTheodore Ts'o TP_STRUCT__entry( 4019bffad1eSTheodore Ts'o __field( dev_t, dev ) 4029bffad1eSTheodore Ts'o __field( __u64, blk ) 4039bffad1eSTheodore Ts'o __field( __u64, count ) 4049bffad1eSTheodore Ts'o 4059bffad1eSTheodore Ts'o ), 4069bffad1eSTheodore Ts'o 4079bffad1eSTheodore Ts'o TP_fast_assign( 4089bffad1eSTheodore Ts'o __entry->dev = sb->s_dev; 4099bffad1eSTheodore Ts'o __entry->blk = blk; 4109bffad1eSTheodore Ts'o __entry->count = count; 4119bffad1eSTheodore Ts'o ), 4129bffad1eSTheodore Ts'o 4139bffad1eSTheodore Ts'o TP_printk("dev %s blk %llu count %llu", 4149bffad1eSTheodore Ts'o jbd2_dev_to_name(__entry->dev), __entry->blk, __entry->count) 4159bffad1eSTheodore Ts'o ); 4169bffad1eSTheodore Ts'o 4179bffad1eSTheodore Ts'o TRACE_EVENT(ext4_mb_new_inode_pa, 4189bffad1eSTheodore Ts'o TP_PROTO(struct ext4_allocation_context *ac, 4199bffad1eSTheodore Ts'o struct ext4_prealloc_space *pa), 4209bffad1eSTheodore Ts'o 4219bffad1eSTheodore Ts'o TP_ARGS(ac, pa), 4229bffad1eSTheodore Ts'o 4239bffad1eSTheodore Ts'o TP_STRUCT__entry( 4249bffad1eSTheodore Ts'o __field( dev_t, dev ) 4259bffad1eSTheodore Ts'o __field( ino_t, ino ) 4269bffad1eSTheodore Ts'o __field( __u64, pa_pstart ) 4279bffad1eSTheodore Ts'o __field( __u32, pa_len ) 4289bffad1eSTheodore Ts'o __field( __u64, pa_lstart ) 4299bffad1eSTheodore Ts'o 4309bffad1eSTheodore Ts'o ), 4319bffad1eSTheodore Ts'o 4329bffad1eSTheodore Ts'o TP_fast_assign( 4339bffad1eSTheodore Ts'o __entry->dev = ac->ac_sb->s_dev; 4349bffad1eSTheodore Ts'o __entry->ino = ac->ac_inode->i_ino; 4359bffad1eSTheodore Ts'o __entry->pa_pstart = pa->pa_pstart; 4369bffad1eSTheodore Ts'o __entry->pa_len = pa->pa_len; 4379bffad1eSTheodore Ts'o __entry->pa_lstart = pa->pa_lstart; 4389bffad1eSTheodore Ts'o ), 4399bffad1eSTheodore Ts'o 4409bffad1eSTheodore Ts'o TP_printk("dev %s ino %lu pstart %llu len %u lstart %llu", 441a3710fd1STheodore Ts'o jbd2_dev_to_name(__entry->dev), (unsigned long) __entry->ino, 442a3710fd1STheodore Ts'o __entry->pa_pstart, __entry->pa_len, __entry->pa_lstart) 4439bffad1eSTheodore Ts'o ); 4449bffad1eSTheodore Ts'o 4459bffad1eSTheodore Ts'o TRACE_EVENT(ext4_mb_new_group_pa, 4469bffad1eSTheodore Ts'o TP_PROTO(struct ext4_allocation_context *ac, 4479bffad1eSTheodore Ts'o struct ext4_prealloc_space *pa), 4489bffad1eSTheodore Ts'o 4499bffad1eSTheodore Ts'o TP_ARGS(ac, pa), 4509bffad1eSTheodore Ts'o 4519bffad1eSTheodore Ts'o TP_STRUCT__entry( 4529bffad1eSTheodore Ts'o __field( dev_t, dev ) 4539bffad1eSTheodore Ts'o __field( ino_t, ino ) 4549bffad1eSTheodore Ts'o __field( __u64, pa_pstart ) 4559bffad1eSTheodore Ts'o __field( __u32, pa_len ) 4569bffad1eSTheodore Ts'o __field( __u64, pa_lstart ) 4579bffad1eSTheodore Ts'o 4589bffad1eSTheodore Ts'o ), 4599bffad1eSTheodore Ts'o 4609bffad1eSTheodore Ts'o TP_fast_assign( 4619bffad1eSTheodore Ts'o __entry->dev = ac->ac_sb->s_dev; 4629bffad1eSTheodore Ts'o __entry->ino = ac->ac_inode->i_ino; 4639bffad1eSTheodore Ts'o __entry->pa_pstart = pa->pa_pstart; 4649bffad1eSTheodore Ts'o __entry->pa_len = pa->pa_len; 4659bffad1eSTheodore Ts'o __entry->pa_lstart = pa->pa_lstart; 4669bffad1eSTheodore Ts'o ), 4679bffad1eSTheodore Ts'o 4689bffad1eSTheodore Ts'o TP_printk("dev %s ino %lu pstart %llu len %u lstart %llu", 469a3710fd1STheodore Ts'o jbd2_dev_to_name(__entry->dev), (unsigned long) __entry->ino, 470a3710fd1STheodore Ts'o __entry->pa_pstart, __entry->pa_len, __entry->pa_lstart) 4719bffad1eSTheodore Ts'o ); 4729bffad1eSTheodore Ts'o 4739bffad1eSTheodore Ts'o TRACE_EVENT(ext4_mb_release_inode_pa, 4749bffad1eSTheodore Ts'o TP_PROTO(struct ext4_allocation_context *ac, 4759bffad1eSTheodore Ts'o struct ext4_prealloc_space *pa, 4769bffad1eSTheodore Ts'o unsigned long long block, unsigned int count), 4779bffad1eSTheodore Ts'o 4789bffad1eSTheodore Ts'o TP_ARGS(ac, pa, block, count), 4799bffad1eSTheodore Ts'o 4809bffad1eSTheodore Ts'o TP_STRUCT__entry( 4819bffad1eSTheodore Ts'o __field( dev_t, dev ) 4829bffad1eSTheodore Ts'o __field( ino_t, ino ) 4839bffad1eSTheodore Ts'o __field( __u64, block ) 4849bffad1eSTheodore Ts'o __field( __u32, count ) 4859bffad1eSTheodore Ts'o 4869bffad1eSTheodore Ts'o ), 4879bffad1eSTheodore Ts'o 4889bffad1eSTheodore Ts'o TP_fast_assign( 4899bffad1eSTheodore Ts'o __entry->dev = ac->ac_sb->s_dev; 4909bffad1eSTheodore Ts'o __entry->ino = ac->ac_inode->i_ino; 4919bffad1eSTheodore Ts'o __entry->block = block; 4929bffad1eSTheodore Ts'o __entry->count = count; 4939bffad1eSTheodore Ts'o ), 4949bffad1eSTheodore Ts'o 4959bffad1eSTheodore Ts'o TP_printk("dev %s ino %lu block %llu count %u", 496a3710fd1STheodore Ts'o jbd2_dev_to_name(__entry->dev), (unsigned long) __entry->ino, 497a3710fd1STheodore Ts'o __entry->block, __entry->count) 4989bffad1eSTheodore Ts'o ); 4999bffad1eSTheodore Ts'o 5009bffad1eSTheodore Ts'o TRACE_EVENT(ext4_mb_release_group_pa, 5019bffad1eSTheodore Ts'o TP_PROTO(struct ext4_allocation_context *ac, 5029bffad1eSTheodore Ts'o struct ext4_prealloc_space *pa), 5039bffad1eSTheodore Ts'o 5049bffad1eSTheodore Ts'o TP_ARGS(ac, pa), 5059bffad1eSTheodore Ts'o 5069bffad1eSTheodore Ts'o TP_STRUCT__entry( 5079bffad1eSTheodore Ts'o __field( dev_t, dev ) 5089bffad1eSTheodore Ts'o __field( ino_t, ino ) 5099bffad1eSTheodore Ts'o __field( __u64, pa_pstart ) 5109bffad1eSTheodore Ts'o __field( __u32, pa_len ) 5119bffad1eSTheodore Ts'o 5129bffad1eSTheodore Ts'o ), 5139bffad1eSTheodore Ts'o 5149bffad1eSTheodore Ts'o TP_fast_assign( 5159bffad1eSTheodore Ts'o __entry->dev = ac->ac_sb->s_dev; 5169bffad1eSTheodore Ts'o __entry->ino = ac->ac_inode->i_ino; 5179bffad1eSTheodore Ts'o __entry->pa_pstart = pa->pa_pstart; 5189bffad1eSTheodore Ts'o __entry->pa_len = pa->pa_len; 5199bffad1eSTheodore Ts'o ), 5209bffad1eSTheodore Ts'o 5219bffad1eSTheodore Ts'o TP_printk("dev %s pstart %llu len %u", 5229bffad1eSTheodore Ts'o jbd2_dev_to_name(__entry->dev), __entry->pa_pstart, __entry->pa_len) 5239bffad1eSTheodore Ts'o ); 5249bffad1eSTheodore Ts'o 5259bffad1eSTheodore Ts'o TRACE_EVENT(ext4_discard_preallocations, 5269bffad1eSTheodore Ts'o TP_PROTO(struct inode *inode), 5279bffad1eSTheodore Ts'o 5289bffad1eSTheodore Ts'o TP_ARGS(inode), 5299bffad1eSTheodore Ts'o 5309bffad1eSTheodore Ts'o TP_STRUCT__entry( 5319bffad1eSTheodore Ts'o __field( dev_t, dev ) 5329bffad1eSTheodore Ts'o __field( ino_t, ino ) 5339bffad1eSTheodore Ts'o 5349bffad1eSTheodore Ts'o ), 5359bffad1eSTheodore Ts'o 5369bffad1eSTheodore Ts'o TP_fast_assign( 5379bffad1eSTheodore Ts'o __entry->dev = inode->i_sb->s_dev; 5389bffad1eSTheodore Ts'o __entry->ino = inode->i_ino; 5399bffad1eSTheodore Ts'o ), 5409bffad1eSTheodore Ts'o 5419bffad1eSTheodore Ts'o TP_printk("dev %s ino %lu", 542a3710fd1STheodore Ts'o jbd2_dev_to_name(__entry->dev), (unsigned long) __entry->ino) 5439bffad1eSTheodore Ts'o ); 5449bffad1eSTheodore Ts'o 5459bffad1eSTheodore Ts'o TRACE_EVENT(ext4_mb_discard_preallocations, 5469bffad1eSTheodore Ts'o TP_PROTO(struct super_block *sb, int needed), 5479bffad1eSTheodore Ts'o 5489bffad1eSTheodore Ts'o TP_ARGS(sb, needed), 5499bffad1eSTheodore Ts'o 5509bffad1eSTheodore Ts'o TP_STRUCT__entry( 5519bffad1eSTheodore Ts'o __field( dev_t, dev ) 5529bffad1eSTheodore Ts'o __field( int, needed ) 5539bffad1eSTheodore Ts'o 5549bffad1eSTheodore Ts'o ), 5559bffad1eSTheodore Ts'o 5569bffad1eSTheodore Ts'o TP_fast_assign( 5579bffad1eSTheodore Ts'o __entry->dev = sb->s_dev; 5589bffad1eSTheodore Ts'o __entry->needed = needed; 5599bffad1eSTheodore Ts'o ), 5609bffad1eSTheodore Ts'o 5619bffad1eSTheodore Ts'o TP_printk("dev %s needed %d", 5629bffad1eSTheodore Ts'o jbd2_dev_to_name(__entry->dev), __entry->needed) 5639bffad1eSTheodore Ts'o ); 5649bffad1eSTheodore Ts'o 5659bffad1eSTheodore Ts'o TRACE_EVENT(ext4_request_blocks, 5669bffad1eSTheodore Ts'o TP_PROTO(struct ext4_allocation_request *ar), 5679bffad1eSTheodore Ts'o 5689bffad1eSTheodore Ts'o TP_ARGS(ar), 5699bffad1eSTheodore Ts'o 5709bffad1eSTheodore Ts'o TP_STRUCT__entry( 5719bffad1eSTheodore Ts'o __field( dev_t, dev ) 5729bffad1eSTheodore Ts'o __field( ino_t, ino ) 5739bffad1eSTheodore Ts'o __field( unsigned int, flags ) 5749bffad1eSTheodore Ts'o __field( unsigned int, len ) 5759bffad1eSTheodore Ts'o __field( __u64, logical ) 5769bffad1eSTheodore Ts'o __field( __u64, goal ) 5779bffad1eSTheodore Ts'o __field( __u64, lleft ) 5789bffad1eSTheodore Ts'o __field( __u64, lright ) 5799bffad1eSTheodore Ts'o __field( __u64, pleft ) 5809bffad1eSTheodore Ts'o __field( __u64, pright ) 5819bffad1eSTheodore Ts'o ), 5829bffad1eSTheodore Ts'o 5839bffad1eSTheodore Ts'o TP_fast_assign( 5849bffad1eSTheodore Ts'o __entry->dev = ar->inode->i_sb->s_dev; 5859bffad1eSTheodore Ts'o __entry->ino = ar->inode->i_ino; 5869bffad1eSTheodore Ts'o __entry->flags = ar->flags; 5879bffad1eSTheodore Ts'o __entry->len = ar->len; 5889bffad1eSTheodore Ts'o __entry->logical = ar->logical; 5899bffad1eSTheodore Ts'o __entry->goal = ar->goal; 5909bffad1eSTheodore Ts'o __entry->lleft = ar->lleft; 5919bffad1eSTheodore Ts'o __entry->lright = ar->lright; 5929bffad1eSTheodore Ts'o __entry->pleft = ar->pleft; 5939bffad1eSTheodore Ts'o __entry->pright = ar->pright; 5949bffad1eSTheodore Ts'o ), 5959bffad1eSTheodore Ts'o 5969bffad1eSTheodore Ts'o TP_printk("dev %s ino %lu flags %u len %u lblk %llu goal %llu lleft %llu lright %llu pleft %llu pright %llu ", 597a3710fd1STheodore Ts'o jbd2_dev_to_name(__entry->dev), (unsigned long) __entry->ino, 598a3710fd1STheodore Ts'o __entry->flags, __entry->len, 5999bffad1eSTheodore Ts'o (unsigned long long) __entry->logical, 6009bffad1eSTheodore Ts'o (unsigned long long) __entry->goal, 6019bffad1eSTheodore Ts'o (unsigned long long) __entry->lleft, 6029bffad1eSTheodore Ts'o (unsigned long long) __entry->lright, 6039bffad1eSTheodore Ts'o (unsigned long long) __entry->pleft, 6049bffad1eSTheodore Ts'o (unsigned long long) __entry->pright) 6059bffad1eSTheodore Ts'o ); 6069bffad1eSTheodore Ts'o 6079bffad1eSTheodore Ts'o TRACE_EVENT(ext4_allocate_blocks, 6089bffad1eSTheodore Ts'o TP_PROTO(struct ext4_allocation_request *ar, unsigned long long block), 6099bffad1eSTheodore Ts'o 6109bffad1eSTheodore Ts'o TP_ARGS(ar, block), 6119bffad1eSTheodore Ts'o 6129bffad1eSTheodore Ts'o TP_STRUCT__entry( 6139bffad1eSTheodore Ts'o __field( dev_t, dev ) 6149bffad1eSTheodore Ts'o __field( ino_t, ino ) 6159bffad1eSTheodore Ts'o __field( __u64, block ) 6169bffad1eSTheodore Ts'o __field( unsigned int, flags ) 6179bffad1eSTheodore Ts'o __field( unsigned int, len ) 6189bffad1eSTheodore Ts'o __field( __u64, logical ) 6199bffad1eSTheodore Ts'o __field( __u64, goal ) 6209bffad1eSTheodore Ts'o __field( __u64, lleft ) 6219bffad1eSTheodore Ts'o __field( __u64, lright ) 6229bffad1eSTheodore Ts'o __field( __u64, pleft ) 6239bffad1eSTheodore Ts'o __field( __u64, pright ) 6249bffad1eSTheodore Ts'o ), 6259bffad1eSTheodore Ts'o 6269bffad1eSTheodore Ts'o TP_fast_assign( 6279bffad1eSTheodore Ts'o __entry->dev = ar->inode->i_sb->s_dev; 6289bffad1eSTheodore Ts'o __entry->ino = ar->inode->i_ino; 6299bffad1eSTheodore Ts'o __entry->block = block; 6309bffad1eSTheodore Ts'o __entry->flags = ar->flags; 6319bffad1eSTheodore Ts'o __entry->len = ar->len; 6329bffad1eSTheodore Ts'o __entry->logical = ar->logical; 6339bffad1eSTheodore Ts'o __entry->goal = ar->goal; 6349bffad1eSTheodore Ts'o __entry->lleft = ar->lleft; 6359bffad1eSTheodore Ts'o __entry->lright = ar->lright; 6369bffad1eSTheodore Ts'o __entry->pleft = ar->pleft; 6379bffad1eSTheodore Ts'o __entry->pright = ar->pright; 6389bffad1eSTheodore Ts'o ), 6399bffad1eSTheodore Ts'o 6409bffad1eSTheodore 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 ", 641a3710fd1STheodore Ts'o jbd2_dev_to_name(__entry->dev), (unsigned long) __entry->ino, 642a3710fd1STheodore Ts'o __entry->flags, __entry->len, __entry->block, 6439bffad1eSTheodore Ts'o (unsigned long long) __entry->logical, 6449bffad1eSTheodore Ts'o (unsigned long long) __entry->goal, 6459bffad1eSTheodore Ts'o (unsigned long long) __entry->lleft, 6469bffad1eSTheodore Ts'o (unsigned long long) __entry->lright, 6479bffad1eSTheodore Ts'o (unsigned long long) __entry->pleft, 6489bffad1eSTheodore Ts'o (unsigned long long) __entry->pright) 6499bffad1eSTheodore Ts'o ); 6509bffad1eSTheodore Ts'o 6519bffad1eSTheodore Ts'o TRACE_EVENT(ext4_free_blocks, 6529bffad1eSTheodore Ts'o TP_PROTO(struct inode *inode, __u64 block, unsigned long count, 6539bffad1eSTheodore Ts'o int metadata), 6549bffad1eSTheodore Ts'o 6559bffad1eSTheodore Ts'o TP_ARGS(inode, block, count, metadata), 6569bffad1eSTheodore Ts'o 6579bffad1eSTheodore Ts'o TP_STRUCT__entry( 6589bffad1eSTheodore Ts'o __field( dev_t, dev ) 6599bffad1eSTheodore Ts'o __field( ino_t, ino ) 6609bffad1eSTheodore Ts'o __field( __u64, block ) 6619bffad1eSTheodore Ts'o __field( unsigned long, count ) 6629bffad1eSTheodore Ts'o __field( int, metadata ) 6639bffad1eSTheodore Ts'o 6649bffad1eSTheodore Ts'o ), 6659bffad1eSTheodore Ts'o 6669bffad1eSTheodore Ts'o TP_fast_assign( 6679bffad1eSTheodore Ts'o __entry->dev = inode->i_sb->s_dev; 6689bffad1eSTheodore Ts'o __entry->ino = inode->i_ino; 6699bffad1eSTheodore Ts'o __entry->block = block; 6709bffad1eSTheodore Ts'o __entry->count = count; 6719bffad1eSTheodore Ts'o __entry->metadata = metadata; 6729bffad1eSTheodore Ts'o ), 6739bffad1eSTheodore Ts'o 6749bffad1eSTheodore Ts'o TP_printk("dev %s ino %lu block %llu count %lu metadata %d", 675a3710fd1STheodore Ts'o jbd2_dev_to_name(__entry->dev), (unsigned long) __entry->ino, 676a3710fd1STheodore Ts'o __entry->block, __entry->count, __entry->metadata) 6779bffad1eSTheodore Ts'o ); 6789bffad1eSTheodore Ts'o 6799bffad1eSTheodore Ts'o TRACE_EVENT(ext4_sync_file, 6809bffad1eSTheodore Ts'o TP_PROTO(struct file *file, struct dentry *dentry, int datasync), 6819bffad1eSTheodore Ts'o 6829bffad1eSTheodore Ts'o TP_ARGS(file, dentry, datasync), 6839bffad1eSTheodore Ts'o 6849bffad1eSTheodore Ts'o TP_STRUCT__entry( 6859bffad1eSTheodore Ts'o __field( dev_t, dev ) 6869bffad1eSTheodore Ts'o __field( ino_t, ino ) 6879bffad1eSTheodore Ts'o __field( ino_t, parent ) 6889bffad1eSTheodore Ts'o __field( int, datasync ) 6899bffad1eSTheodore Ts'o ), 6909bffad1eSTheodore Ts'o 6919bffad1eSTheodore Ts'o TP_fast_assign( 6929bffad1eSTheodore Ts'o __entry->dev = dentry->d_inode->i_sb->s_dev; 6939bffad1eSTheodore Ts'o __entry->ino = dentry->d_inode->i_ino; 6949bffad1eSTheodore Ts'o __entry->datasync = datasync; 6959bffad1eSTheodore Ts'o __entry->parent = dentry->d_parent->d_inode->i_ino; 6969bffad1eSTheodore Ts'o ), 6979bffad1eSTheodore Ts'o 6989bffad1eSTheodore Ts'o TP_printk("dev %s ino %ld parent %ld datasync %d ", 699a3710fd1STheodore Ts'o jbd2_dev_to_name(__entry->dev), (unsigned long) __entry->ino, 700a3710fd1STheodore Ts'o (unsigned long) __entry->parent, __entry->datasync) 7019bffad1eSTheodore Ts'o ); 7029bffad1eSTheodore Ts'o 7039bffad1eSTheodore Ts'o TRACE_EVENT(ext4_sync_fs, 7049bffad1eSTheodore Ts'o TP_PROTO(struct super_block *sb, int wait), 7059bffad1eSTheodore Ts'o 7069bffad1eSTheodore Ts'o TP_ARGS(sb, wait), 7079bffad1eSTheodore Ts'o 7089bffad1eSTheodore Ts'o TP_STRUCT__entry( 7099bffad1eSTheodore Ts'o __field( dev_t, dev ) 7109bffad1eSTheodore Ts'o __field( int, wait ) 7119bffad1eSTheodore Ts'o 7129bffad1eSTheodore Ts'o ), 7139bffad1eSTheodore Ts'o 7149bffad1eSTheodore Ts'o TP_fast_assign( 7159bffad1eSTheodore Ts'o __entry->dev = sb->s_dev; 7169bffad1eSTheodore Ts'o __entry->wait = wait; 7179bffad1eSTheodore Ts'o ), 7189bffad1eSTheodore Ts'o 7199bffad1eSTheodore Ts'o TP_printk("dev %s wait %d", jbd2_dev_to_name(__entry->dev), 7209bffad1eSTheodore Ts'o __entry->wait) 7219bffad1eSTheodore Ts'o ); 7229bffad1eSTheodore Ts'o 723fb40ba0dSTheodore Ts'o TRACE_EVENT(ext4_alloc_da_blocks, 724fb40ba0dSTheodore Ts'o TP_PROTO(struct inode *inode), 725fb40ba0dSTheodore Ts'o 726fb40ba0dSTheodore Ts'o TP_ARGS(inode), 727fb40ba0dSTheodore Ts'o 728fb40ba0dSTheodore Ts'o TP_STRUCT__entry( 729fb40ba0dSTheodore Ts'o __field( dev_t, dev ) 730fb40ba0dSTheodore Ts'o __field( ino_t, ino ) 731fb40ba0dSTheodore Ts'o __field( unsigned int, data_blocks ) 732fb40ba0dSTheodore Ts'o __field( unsigned int, meta_blocks ) 733fb40ba0dSTheodore Ts'o ), 734fb40ba0dSTheodore Ts'o 735fb40ba0dSTheodore Ts'o TP_fast_assign( 736fb40ba0dSTheodore Ts'o __entry->dev = inode->i_sb->s_dev; 737fb40ba0dSTheodore Ts'o __entry->ino = inode->i_ino; 738fb40ba0dSTheodore Ts'o __entry->data_blocks = EXT4_I(inode)->i_reserved_data_blocks; 739fb40ba0dSTheodore Ts'o __entry->meta_blocks = EXT4_I(inode)->i_reserved_meta_blocks; 740fb40ba0dSTheodore Ts'o ), 741fb40ba0dSTheodore Ts'o 742fb40ba0dSTheodore Ts'o TP_printk("dev %s ino %lu data_blocks %u meta_blocks %u", 743fb40ba0dSTheodore Ts'o jbd2_dev_to_name(__entry->dev), (unsigned long) __entry->ino, 744fb40ba0dSTheodore Ts'o __entry->data_blocks, __entry->meta_blocks) 745fb40ba0dSTheodore Ts'o ); 746fb40ba0dSTheodore Ts'o 747296c355cSTheodore Ts'o TRACE_EVENT(ext4_mballoc_alloc, 748296c355cSTheodore Ts'o TP_PROTO(struct ext4_allocation_context *ac), 749296c355cSTheodore Ts'o 750296c355cSTheodore Ts'o TP_ARGS(ac), 751296c355cSTheodore Ts'o 752296c355cSTheodore Ts'o TP_STRUCT__entry( 753296c355cSTheodore Ts'o __field( dev_t, dev ) 754296c355cSTheodore Ts'o __field( ino_t, ino ) 755296c355cSTheodore Ts'o __field( __u16, found ) 756296c355cSTheodore Ts'o __field( __u16, groups ) 757296c355cSTheodore Ts'o __field( __u16, buddy ) 758296c355cSTheodore Ts'o __field( __u16, flags ) 759296c355cSTheodore Ts'o __field( __u16, tail ) 760296c355cSTheodore Ts'o __field( __u8, cr ) 761296c355cSTheodore Ts'o __field( __u32, orig_logical ) 762296c355cSTheodore Ts'o __field( int, orig_start ) 763296c355cSTheodore Ts'o __field( __u32, orig_group ) 764296c355cSTheodore Ts'o __field( int, orig_len ) 765296c355cSTheodore Ts'o __field( __u32, goal_logical ) 766296c355cSTheodore Ts'o __field( int, goal_start ) 767296c355cSTheodore Ts'o __field( __u32, goal_group ) 768296c355cSTheodore Ts'o __field( int, goal_len ) 769296c355cSTheodore Ts'o __field( __u32, result_logical ) 770296c355cSTheodore Ts'o __field( int, result_start ) 771296c355cSTheodore Ts'o __field( __u32, result_group ) 772296c355cSTheodore Ts'o __field( int, result_len ) 773296c355cSTheodore Ts'o ), 774296c355cSTheodore Ts'o 775296c355cSTheodore Ts'o TP_fast_assign( 776296c355cSTheodore Ts'o __entry->dev = ac->ac_inode->i_sb->s_dev; 777296c355cSTheodore Ts'o __entry->ino = ac->ac_inode->i_ino; 778296c355cSTheodore Ts'o __entry->found = ac->ac_found; 779296c355cSTheodore Ts'o __entry->flags = ac->ac_flags; 780296c355cSTheodore Ts'o __entry->groups = ac->ac_groups_scanned; 781296c355cSTheodore Ts'o __entry->buddy = ac->ac_buddy; 782296c355cSTheodore Ts'o __entry->tail = ac->ac_tail; 783296c355cSTheodore Ts'o __entry->cr = ac->ac_criteria; 784296c355cSTheodore Ts'o __entry->orig_logical = ac->ac_o_ex.fe_logical; 785296c355cSTheodore Ts'o __entry->orig_start = ac->ac_o_ex.fe_start; 786296c355cSTheodore Ts'o __entry->orig_group = ac->ac_o_ex.fe_group; 787296c355cSTheodore Ts'o __entry->orig_len = ac->ac_o_ex.fe_len; 788296c355cSTheodore Ts'o __entry->goal_logical = ac->ac_g_ex.fe_logical; 789296c355cSTheodore Ts'o __entry->goal_start = ac->ac_g_ex.fe_start; 790296c355cSTheodore Ts'o __entry->goal_group = ac->ac_g_ex.fe_group; 791296c355cSTheodore Ts'o __entry->goal_len = ac->ac_g_ex.fe_len; 792296c355cSTheodore Ts'o __entry->result_logical = ac->ac_f_ex.fe_logical; 793296c355cSTheodore Ts'o __entry->result_start = ac->ac_f_ex.fe_start; 794296c355cSTheodore Ts'o __entry->result_group = ac->ac_f_ex.fe_group; 795296c355cSTheodore Ts'o __entry->result_len = ac->ac_f_ex.fe_len; 796296c355cSTheodore Ts'o ), 797296c355cSTheodore Ts'o 798296c355cSTheodore Ts'o TP_printk("dev %s inode %lu orig %u/%d/%u@%u goal %u/%d/%u@%u " 799296c355cSTheodore Ts'o "result %u/%d/%u@%u blks %u grps %u cr %u flags 0x%04x " 800296c355cSTheodore Ts'o "tail %u broken %u", 801296c355cSTheodore Ts'o jbd2_dev_to_name(__entry->dev), (unsigned long) __entry->ino, 802296c355cSTheodore Ts'o __entry->orig_group, __entry->orig_start, 803296c355cSTheodore Ts'o __entry->orig_len, __entry->orig_logical, 804296c355cSTheodore Ts'o __entry->goal_group, __entry->goal_start, 805296c355cSTheodore Ts'o __entry->goal_len, __entry->goal_logical, 806296c355cSTheodore Ts'o __entry->result_group, __entry->result_start, 807296c355cSTheodore Ts'o __entry->result_len, __entry->result_logical, 808296c355cSTheodore Ts'o __entry->found, __entry->groups, __entry->cr, 809296c355cSTheodore Ts'o __entry->flags, __entry->tail, 810296c355cSTheodore Ts'o __entry->buddy ? 1 << __entry->buddy : 0) 811296c355cSTheodore Ts'o ); 812296c355cSTheodore Ts'o 813296c355cSTheodore Ts'o TRACE_EVENT(ext4_mballoc_prealloc, 814296c355cSTheodore Ts'o TP_PROTO(struct ext4_allocation_context *ac), 815296c355cSTheodore Ts'o 816296c355cSTheodore Ts'o TP_ARGS(ac), 817296c355cSTheodore Ts'o 818296c355cSTheodore Ts'o TP_STRUCT__entry( 819296c355cSTheodore Ts'o __field( dev_t, dev ) 820296c355cSTheodore Ts'o __field( ino_t, ino ) 821296c355cSTheodore Ts'o __field( __u32, orig_logical ) 822296c355cSTheodore Ts'o __field( int, orig_start ) 823296c355cSTheodore Ts'o __field( __u32, orig_group ) 824296c355cSTheodore Ts'o __field( int, orig_len ) 825296c355cSTheodore Ts'o __field( __u32, result_logical ) 826296c355cSTheodore Ts'o __field( int, result_start ) 827296c355cSTheodore Ts'o __field( __u32, result_group ) 828296c355cSTheodore Ts'o __field( int, result_len ) 829296c355cSTheodore Ts'o ), 830296c355cSTheodore Ts'o 831296c355cSTheodore Ts'o TP_fast_assign( 832296c355cSTheodore Ts'o __entry->dev = ac->ac_inode->i_sb->s_dev; 833296c355cSTheodore Ts'o __entry->ino = ac->ac_inode->i_ino; 834296c355cSTheodore Ts'o __entry->orig_logical = ac->ac_o_ex.fe_logical; 835296c355cSTheodore Ts'o __entry->orig_start = ac->ac_o_ex.fe_start; 836296c355cSTheodore Ts'o __entry->orig_group = ac->ac_o_ex.fe_group; 837296c355cSTheodore Ts'o __entry->orig_len = ac->ac_o_ex.fe_len; 838296c355cSTheodore Ts'o __entry->result_logical = ac->ac_b_ex.fe_logical; 839296c355cSTheodore Ts'o __entry->result_start = ac->ac_b_ex.fe_start; 840296c355cSTheodore Ts'o __entry->result_group = ac->ac_b_ex.fe_group; 841296c355cSTheodore Ts'o __entry->result_len = ac->ac_b_ex.fe_len; 842296c355cSTheodore Ts'o ), 843296c355cSTheodore Ts'o 844296c355cSTheodore Ts'o TP_printk("dev %s inode %lu orig %u/%d/%u@%u result %u/%d/%u@%u", 845296c355cSTheodore Ts'o jbd2_dev_to_name(__entry->dev), (unsigned long) __entry->ino, 846296c355cSTheodore Ts'o __entry->orig_group, __entry->orig_start, 847296c355cSTheodore Ts'o __entry->orig_len, __entry->orig_logical, 848296c355cSTheodore Ts'o __entry->result_group, __entry->result_start, 849296c355cSTheodore Ts'o __entry->result_len, __entry->result_logical) 850296c355cSTheodore Ts'o ); 851296c355cSTheodore Ts'o 852296c355cSTheodore Ts'o TRACE_EVENT(ext4_mballoc_discard, 853296c355cSTheodore Ts'o TP_PROTO(struct ext4_allocation_context *ac), 854296c355cSTheodore Ts'o 855296c355cSTheodore Ts'o TP_ARGS(ac), 856296c355cSTheodore Ts'o 857296c355cSTheodore Ts'o TP_STRUCT__entry( 858296c355cSTheodore Ts'o __field( dev_t, dev ) 859296c355cSTheodore Ts'o __field( ino_t, ino ) 860296c355cSTheodore Ts'o __field( __u32, result_logical ) 861296c355cSTheodore Ts'o __field( int, result_start ) 862296c355cSTheodore Ts'o __field( __u32, result_group ) 863296c355cSTheodore Ts'o __field( int, result_len ) 864296c355cSTheodore Ts'o ), 865296c355cSTheodore Ts'o 866296c355cSTheodore Ts'o TP_fast_assign( 867296c355cSTheodore Ts'o __entry->dev = ac->ac_inode->i_sb->s_dev; 868296c355cSTheodore Ts'o __entry->ino = ac->ac_inode->i_ino; 869296c355cSTheodore Ts'o __entry->result_logical = ac->ac_b_ex.fe_logical; 870296c355cSTheodore Ts'o __entry->result_start = ac->ac_b_ex.fe_start; 871296c355cSTheodore Ts'o __entry->result_group = ac->ac_b_ex.fe_group; 872296c355cSTheodore Ts'o __entry->result_len = ac->ac_b_ex.fe_len; 873296c355cSTheodore Ts'o ), 874296c355cSTheodore Ts'o 875296c355cSTheodore Ts'o TP_printk("dev %s inode %lu extent %u/%d/%u@%u ", 876296c355cSTheodore Ts'o jbd2_dev_to_name(__entry->dev), (unsigned long) __entry->ino, 877296c355cSTheodore Ts'o __entry->result_group, __entry->result_start, 878296c355cSTheodore Ts'o __entry->result_len, __entry->result_logical) 879296c355cSTheodore Ts'o ); 880296c355cSTheodore Ts'o 881296c355cSTheodore Ts'o TRACE_EVENT(ext4_mballoc_free, 882296c355cSTheodore Ts'o TP_PROTO(struct ext4_allocation_context *ac), 883296c355cSTheodore Ts'o 884296c355cSTheodore Ts'o TP_ARGS(ac), 885296c355cSTheodore Ts'o 886296c355cSTheodore Ts'o TP_STRUCT__entry( 887296c355cSTheodore Ts'o __field( dev_t, dev ) 888296c355cSTheodore Ts'o __field( ino_t, ino ) 889296c355cSTheodore Ts'o __field( __u32, result_logical ) 890296c355cSTheodore Ts'o __field( int, result_start ) 891296c355cSTheodore Ts'o __field( __u32, result_group ) 892296c355cSTheodore Ts'o __field( int, result_len ) 893296c355cSTheodore Ts'o ), 894296c355cSTheodore Ts'o 895296c355cSTheodore Ts'o TP_fast_assign( 896296c355cSTheodore Ts'o __entry->dev = ac->ac_inode->i_sb->s_dev; 897296c355cSTheodore Ts'o __entry->ino = ac->ac_inode->i_ino; 898296c355cSTheodore Ts'o __entry->result_logical = ac->ac_b_ex.fe_logical; 899296c355cSTheodore Ts'o __entry->result_start = ac->ac_b_ex.fe_start; 900296c355cSTheodore Ts'o __entry->result_group = ac->ac_b_ex.fe_group; 901296c355cSTheodore Ts'o __entry->result_len = ac->ac_b_ex.fe_len; 902296c355cSTheodore Ts'o ), 903296c355cSTheodore Ts'o 904296c355cSTheodore Ts'o TP_printk("dev %s inode %lu extent %u/%d/%u@%u ", 905296c355cSTheodore Ts'o jbd2_dev_to_name(__entry->dev), (unsigned long) __entry->ino, 906296c355cSTheodore Ts'o __entry->result_group, __entry->result_start, 907296c355cSTheodore Ts'o __entry->result_len, __entry->result_logical) 908296c355cSTheodore Ts'o ); 909296c355cSTheodore Ts'o 9109bffad1eSTheodore Ts'o #endif /* _TRACE_EXT4_H */ 9119bffad1eSTheodore Ts'o 9129bffad1eSTheodore Ts'o /* This part must be outside protection */ 9139bffad1eSTheodore Ts'o #include <trace/define_trace.h> 914