1*60283726SJan Kara /* SPDX-License-Identifier: GPL-2.0 */ 2*60283726SJan Kara #undef TRACE_SYSTEM 3*60283726SJan Kara #define TRACE_SYSTEM readahead 4*60283726SJan Kara 5*60283726SJan Kara #if !defined(_TRACE_FILEMAP_H) || defined(TRACE_HEADER_MULTI_READ) 6*60283726SJan Kara #define _TRACE_READAHEAD_H 7*60283726SJan Kara 8*60283726SJan Kara #include <linux/types.h> 9*60283726SJan Kara #include <linux/tracepoint.h> 10*60283726SJan Kara #include <linux/mm.h> 11*60283726SJan Kara #include <linux/fs.h> 12*60283726SJan Kara #include <linux/pagemap.h> 13*60283726SJan Kara 14*60283726SJan Kara TRACE_EVENT(page_cache_ra_unbounded, 15*60283726SJan Kara TP_PROTO(struct inode *inode, pgoff_t index, unsigned long nr_to_read, 16*60283726SJan Kara unsigned long lookahead_size), 17*60283726SJan Kara 18*60283726SJan Kara TP_ARGS(inode, index, nr_to_read, lookahead_size), 19*60283726SJan Kara 20*60283726SJan Kara TP_STRUCT__entry( 21*60283726SJan Kara __field(unsigned long, i_ino) 22*60283726SJan Kara __field(dev_t, s_dev) 23*60283726SJan Kara __field(pgoff_t, index) 24*60283726SJan Kara __field(unsigned long, nr_to_read) 25*60283726SJan Kara __field(unsigned long, lookahead_size) 26*60283726SJan Kara ), 27*60283726SJan Kara 28*60283726SJan Kara TP_fast_assign( 29*60283726SJan Kara __entry->i_ino = inode->i_ino; 30*60283726SJan Kara __entry->s_dev = inode->i_sb->s_dev; 31*60283726SJan Kara __entry->index = index; 32*60283726SJan Kara __entry->nr_to_read = nr_to_read; 33*60283726SJan Kara __entry->lookahead_size = lookahead_size; 34*60283726SJan Kara ), 35*60283726SJan Kara 36*60283726SJan Kara TP_printk( 37*60283726SJan Kara "dev=%d:%d ino=%lx index=%lu nr_to_read=%lu lookahead_size=%lu", 38*60283726SJan Kara MAJOR(__entry->s_dev), MINOR(__entry->s_dev), __entry->i_ino, 39*60283726SJan Kara __entry->index, __entry->nr_to_read, __entry->lookahead_size 40*60283726SJan Kara ) 41*60283726SJan Kara ); 42*60283726SJan Kara 43*60283726SJan Kara TRACE_EVENT(page_cache_ra_order, 44*60283726SJan Kara TP_PROTO(struct inode *inode, pgoff_t index, struct file_ra_state *ra), 45*60283726SJan Kara 46*60283726SJan Kara TP_ARGS(inode, index, ra), 47*60283726SJan Kara 48*60283726SJan Kara TP_STRUCT__entry( 49*60283726SJan Kara __field(unsigned long, i_ino) 50*60283726SJan Kara __field(dev_t, s_dev) 51*60283726SJan Kara __field(pgoff_t, index) 52*60283726SJan Kara __field(unsigned int, order) 53*60283726SJan Kara __field(unsigned int, size) 54*60283726SJan Kara __field(unsigned int, async_size) 55*60283726SJan Kara __field(unsigned int, ra_pages) 56*60283726SJan Kara ), 57*60283726SJan Kara 58*60283726SJan Kara TP_fast_assign( 59*60283726SJan Kara __entry->i_ino = inode->i_ino; 60*60283726SJan Kara __entry->s_dev = inode->i_sb->s_dev; 61*60283726SJan Kara __entry->index = index; 62*60283726SJan Kara __entry->order = ra->order; 63*60283726SJan Kara __entry->size = ra->size; 64*60283726SJan Kara __entry->async_size = ra->async_size; 65*60283726SJan Kara __entry->ra_pages = ra->ra_pages; 66*60283726SJan Kara ), 67*60283726SJan Kara 68*60283726SJan Kara TP_printk( 69*60283726SJan Kara "dev=%d:%d ino=%lx index=%lu order=%u size=%u async_size=%u ra_pages=%u", 70*60283726SJan Kara MAJOR(__entry->s_dev), MINOR(__entry->s_dev), __entry->i_ino, 71*60283726SJan Kara __entry->index, __entry->order, __entry->size, 72*60283726SJan Kara __entry->async_size, __entry->ra_pages 73*60283726SJan Kara ) 74*60283726SJan Kara ); 75*60283726SJan Kara 76*60283726SJan Kara DECLARE_EVENT_CLASS(page_cache_ra_op, 77*60283726SJan Kara TP_PROTO(struct inode *inode, pgoff_t index, struct file_ra_state *ra, 78*60283726SJan Kara unsigned long req_count), 79*60283726SJan Kara 80*60283726SJan Kara TP_ARGS(inode, index, ra, req_count), 81*60283726SJan Kara 82*60283726SJan Kara TP_STRUCT__entry( 83*60283726SJan Kara __field(unsigned long, i_ino) 84*60283726SJan Kara __field(dev_t, s_dev) 85*60283726SJan Kara __field(pgoff_t, index) 86*60283726SJan Kara __field(unsigned int, order) 87*60283726SJan Kara __field(unsigned int, size) 88*60283726SJan Kara __field(unsigned int, async_size) 89*60283726SJan Kara __field(unsigned int, ra_pages) 90*60283726SJan Kara __field(unsigned int, mmap_miss) 91*60283726SJan Kara __field(loff_t, prev_pos) 92*60283726SJan Kara __field(unsigned long, req_count) 93*60283726SJan Kara ), 94*60283726SJan Kara 95*60283726SJan Kara TP_fast_assign( 96*60283726SJan Kara __entry->i_ino = inode->i_ino; 97*60283726SJan Kara __entry->s_dev = inode->i_sb->s_dev; 98*60283726SJan Kara __entry->index = index; 99*60283726SJan Kara __entry->order = ra->order; 100*60283726SJan Kara __entry->size = ra->size; 101*60283726SJan Kara __entry->async_size = ra->async_size; 102*60283726SJan Kara __entry->ra_pages = ra->ra_pages; 103*60283726SJan Kara __entry->mmap_miss = ra->mmap_miss; 104*60283726SJan Kara __entry->prev_pos = ra->prev_pos; 105*60283726SJan Kara __entry->req_count = req_count; 106*60283726SJan Kara ), 107*60283726SJan Kara 108*60283726SJan Kara TP_printk( 109*60283726SJan Kara "dev=%d:%d ino=%lx index=%lu req_count=%lu order=%u size=%u async_size=%u ra_pages=%u mmap_miss=%u prev_pos=%lld", 110*60283726SJan Kara MAJOR(__entry->s_dev), MINOR(__entry->s_dev), __entry->i_ino, 111*60283726SJan Kara __entry->index, __entry->req_count, __entry->order, 112*60283726SJan Kara __entry->size, __entry->async_size, __entry->ra_pages, 113*60283726SJan Kara __entry->mmap_miss, __entry->prev_pos 114*60283726SJan Kara ) 115*60283726SJan Kara ); 116*60283726SJan Kara 117*60283726SJan Kara DEFINE_EVENT(page_cache_ra_op, page_cache_sync_ra, 118*60283726SJan Kara TP_PROTO(struct inode *inode, pgoff_t index, struct file_ra_state *ra, 119*60283726SJan Kara unsigned long req_count), 120*60283726SJan Kara TP_ARGS(inode, index, ra, req_count) 121*60283726SJan Kara ); 122*60283726SJan Kara 123*60283726SJan Kara DEFINE_EVENT(page_cache_ra_op, page_cache_async_ra, 124*60283726SJan Kara TP_PROTO(struct inode *inode, pgoff_t index, struct file_ra_state *ra, 125*60283726SJan Kara unsigned long req_count), 126*60283726SJan Kara TP_ARGS(inode, index, ra, req_count) 127*60283726SJan Kara ); 128*60283726SJan Kara 129*60283726SJan Kara #endif /* _TRACE_FILEMAP_H */ 130*60283726SJan Kara 131*60283726SJan Kara /* This part must be outside protection */ 132*60283726SJan Kara #include <trace/define_trace.h> 133