1 /* SPDX-License-Identifier: GPL-2.0 */ << 2 #undef TRACE_SYSTEM 1 #undef TRACE_SYSTEM 3 #define TRACE_SYSTEM filemap 2 #define TRACE_SYSTEM filemap 4 3 5 #if !defined(_TRACE_FILEMAP_H) || defined(TRAC 4 #if !defined(_TRACE_FILEMAP_H) || defined(TRACE_HEADER_MULTI_READ) 6 #define _TRACE_FILEMAP_H 5 #define _TRACE_FILEMAP_H 7 6 8 #include <linux/types.h> 7 #include <linux/types.h> 9 #include <linux/tracepoint.h> 8 #include <linux/tracepoint.h> 10 #include <linux/mm.h> 9 #include <linux/mm.h> 11 #include <linux/memcontrol.h> 10 #include <linux/memcontrol.h> 12 #include <linux/device.h> 11 #include <linux/device.h> 13 #include <linux/kdev_t.h> 12 #include <linux/kdev_t.h> 14 #include <linux/errseq.h> << 15 13 16 DECLARE_EVENT_CLASS(mm_filemap_op_page_cache, 14 DECLARE_EVENT_CLASS(mm_filemap_op_page_cache, 17 15 18 TP_PROTO(struct folio *folio), !! 16 TP_PROTO(struct page *page), 19 17 20 TP_ARGS(folio), !! 18 TP_ARGS(page), 21 19 22 TP_STRUCT__entry( 20 TP_STRUCT__entry( 23 __field(unsigned long, pfn) 21 __field(unsigned long, pfn) 24 __field(unsigned long, i_ino) 22 __field(unsigned long, i_ino) 25 __field(unsigned long, index) 23 __field(unsigned long, index) 26 __field(dev_t, s_dev) 24 __field(dev_t, s_dev) 27 __field(unsigned char, order) << 28 ), 25 ), 29 26 30 TP_fast_assign( 27 TP_fast_assign( 31 __entry->pfn = folio_pfn(folio !! 28 __entry->pfn = page_to_pfn(page); 32 __entry->i_ino = folio->mappin !! 29 __entry->i_ino = page->mapping->host->i_ino; 33 __entry->index = folio->index; !! 30 __entry->index = page->index; 34 if (folio->mapping->host->i_sb !! 31 if (page->mapping->host->i_sb) 35 __entry->s_dev = folio !! 32 __entry->s_dev = page->mapping->host->i_sb->s_dev; 36 else 33 else 37 __entry->s_dev = folio !! 34 __entry->s_dev = page->mapping->host->i_rdev; 38 __entry->order = folio_order(f << 39 ), 35 ), 40 36 41 TP_printk("dev %d:%d ino %lx pfn=0x%lx !! 37 TP_printk("dev %d:%d ino %lx page=%p pfn=%lu ofs=%lu", 42 MAJOR(__entry->s_dev), MINOR(_ 38 MAJOR(__entry->s_dev), MINOR(__entry->s_dev), 43 __entry->i_ino, 39 __entry->i_ino, >> 40 pfn_to_page(__entry->pfn), 44 __entry->pfn, 41 __entry->pfn, 45 __entry->index << PAGE_SHIFT, !! 42 __entry->index << PAGE_SHIFT) 46 __entry->order) << 47 ); 43 ); 48 44 49 DEFINE_EVENT(mm_filemap_op_page_cache, mm_file 45 DEFINE_EVENT(mm_filemap_op_page_cache, mm_filemap_delete_from_page_cache, 50 TP_PROTO(struct folio *folio), !! 46 TP_PROTO(struct page *page), 51 TP_ARGS(folio) !! 47 TP_ARGS(page) 52 ); 48 ); 53 49 54 DEFINE_EVENT(mm_filemap_op_page_cache, mm_file 50 DEFINE_EVENT(mm_filemap_op_page_cache, mm_filemap_add_to_page_cache, 55 TP_PROTO(struct folio *folio), !! 51 TP_PROTO(struct page *page), 56 TP_ARGS(folio) !! 52 TP_ARGS(page) 57 ); 53 ); 58 54 59 DECLARE_EVENT_CLASS(mm_filemap_op_page_cache_r << 60 << 61 TP_PROTO( << 62 struct address_space *mapping, << 63 pgoff_t index, << 64 pgoff_t last_index << 65 ), << 66 << 67 TP_ARGS(mapping, index, last_index), << 68 << 69 TP_STRUCT__entry( << 70 __field(unsigned long, i_ino) << 71 __field(dev_t, s_dev) << 72 __field(unsigned long, index) << 73 __field(unsigned long, last_in << 74 ), << 75 << 76 TP_fast_assign( << 77 __entry->i_ino = mapping->host << 78 if (mapping->host->i_sb) << 79 __entry->s_dev = << 80 mapping->host- << 81 else << 82 __entry->s_dev = mappi << 83 __entry->index = index; << 84 __entry->last_index = last_ind << 85 ), << 86 << 87 TP_printk( << 88 "dev=%d:%d ino=%lx ofs=%lld-%l << 89 MAJOR(__entry->s_dev), << 90 MINOR(__entry->s_dev), __entry << 91 ((loff_t)__entry->index) << PA << 92 ((((loff_t)__entry->last_index << 93 ) << 94 ); << 95 << 96 DEFINE_EVENT(mm_filemap_op_page_cache_range, m << 97 TP_PROTO( << 98 struct address_space *mapping, << 99 pgoff_t index, << 100 pgoff_t last_index << 101 ), << 102 TP_ARGS(mapping, index, last_index) << 103 ); << 104 << 105 DEFINE_EVENT(mm_filemap_op_page_cache_range, m << 106 TP_PROTO( << 107 struct address_space *mapping, << 108 pgoff_t index, << 109 pgoff_t last_index << 110 ), << 111 TP_ARGS(mapping, index, last_index) << 112 ); << 113 << 114 TRACE_EVENT(mm_filemap_fault, << 115 TP_PROTO(struct address_space *mapping << 116 << 117 TP_ARGS(mapping, index), << 118 << 119 TP_STRUCT__entry( << 120 __field(unsigned long, i_ino) << 121 __field(dev_t, s_dev) << 122 __field(unsigned long, index) << 123 ), << 124 << 125 TP_fast_assign( << 126 __entry->i_ino = mapping->host << 127 if (mapping->host->i_sb) << 128 __entry->s_dev = << 129 mapping->host- << 130 else << 131 __entry->s_dev = mappi << 132 __entry->index = index; << 133 ), << 134 << 135 TP_printk( << 136 "dev=%d:%d ino=%lx ofs=%lld", << 137 MAJOR(__entry->s_dev), << 138 MINOR(__entry->s_dev), __entry << 139 ((loff_t)__entry->index) << PA << 140 ) << 141 ); << 142 << 143 TRACE_EVENT(filemap_set_wb_err, << 144 TP_PROTO(struct address_space << 145 << 146 TP_ARGS(mapping, eseq), << 147 << 148 TP_STRUCT__entry( << 149 __field(unsigned long, << 150 __field(dev_t, s_dev) << 151 __field(errseq_t, errs << 152 ), << 153 << 154 TP_fast_assign( << 155 __entry->i_ino = mappi << 156 __entry->errseq = eseq << 157 if (mapping->host->i_s << 158 __entry->s_dev << 159 else << 160 __entry->s_dev << 161 ), << 162 << 163 TP_printk("dev=%d:%d ino=0x%lx << 164 MAJOR(__entry->s_dev), << 165 __entry->i_ino, __entr << 166 ); << 167 << 168 TRACE_EVENT(file_check_and_advance_wb_err, << 169 TP_PROTO(struct file *file, er << 170 << 171 TP_ARGS(file, old), << 172 << 173 TP_STRUCT__entry( << 174 __field(struct file *, << 175 __field(unsigned long, << 176 __field(dev_t, s_dev) << 177 __field(errseq_t, old) << 178 __field(errseq_t, new) << 179 ), << 180 << 181 TP_fast_assign( << 182 __entry->file = file; << 183 __entry->i_ino = file- << 184 if (file->f_mapping->h << 185 __entry->s_dev << 186 file-> << 187 else << 188 __entry->s_dev << 189 file-> << 190 __entry->old = old; << 191 __entry->new = file->f << 192 ), << 193 << 194 TP_printk("file=%p dev=%d:%d i << 195 __entry->file, MAJOR(_ << 196 MINOR(__entry->s_dev), << 197 __entry->new) << 198 ); << 199 #endif /* _TRACE_FILEMAP_H */ 55 #endif /* _TRACE_FILEMAP_H */ 200 56 201 /* This part must be outside protection */ 57 /* This part must be outside protection */ 202 #include <trace/define_trace.h> 58 #include <trace/define_trace.h> 203 59
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.