| 1 | /* SPDX-License-Identifier: GPL-2.0-or-later */ | 
|---|
| 2 | /* Network filesystem support module tracepoints | 
|---|
| 3 | * | 
|---|
| 4 | * Copyright (C) 2021 Red Hat, Inc. All Rights Reserved. | 
|---|
| 5 | * Written by David Howells (dhowells@redhat.com) | 
|---|
| 6 | */ | 
|---|
| 7 | #undef TRACE_SYSTEM | 
|---|
| 8 | #define TRACE_SYSTEM netfs | 
|---|
| 9 |  | 
|---|
| 10 | #if !defined(_TRACE_NETFS_H) || defined(TRACE_HEADER_MULTI_READ) | 
|---|
| 11 | #define _TRACE_NETFS_H | 
|---|
| 12 |  | 
|---|
| 13 | #include <linux/tracepoint.h> | 
|---|
| 14 |  | 
|---|
| 15 | /* | 
|---|
| 16 | * Define enums for tracing information. | 
|---|
| 17 | */ | 
|---|
| 18 | #define netfs_read_traces					\ | 
|---|
| 19 | EM(netfs_read_trace_dio_read,		"DIO-READ ")	\ | 
|---|
| 20 | EM(netfs_read_trace_expanded,		"EXPANDED ")	\ | 
|---|
| 21 | EM(netfs_read_trace_readahead,		"READAHEAD")	\ | 
|---|
| 22 | EM(netfs_read_trace_readpage,		"READPAGE ")	\ | 
|---|
| 23 | EM(netfs_read_trace_read_gaps,		"READ-GAPS")	\ | 
|---|
| 24 | EM(netfs_read_trace_read_single,	"READ-SNGL")	\ | 
|---|
| 25 | EM(netfs_read_trace_prefetch_for_write,	"PREFETCHW")	\ | 
|---|
| 26 | E_(netfs_read_trace_write_begin,	"WRITEBEGN") | 
|---|
| 27 |  | 
|---|
| 28 | #define netfs_write_traces					\ | 
|---|
| 29 | EM(netfs_write_trace_copy_to_cache,	"COPY2CACH")	\ | 
|---|
| 30 | EM(netfs_write_trace_dio_write,		"DIO-WRITE")	\ | 
|---|
| 31 | EM(netfs_write_trace_unbuffered_write,	"UNB-WRITE")	\ | 
|---|
| 32 | EM(netfs_write_trace_writeback,		"WRITEBACK")	\ | 
|---|
| 33 | EM(netfs_write_trace_writeback_single,	"WB-SINGLE") \ | 
|---|
| 34 | E_(netfs_write_trace_writethrough,	"WRITETHRU") | 
|---|
| 35 |  | 
|---|
| 36 | #define netfs_rreq_origins					\ | 
|---|
| 37 | EM(NETFS_READAHEAD,			"RA")		\ | 
|---|
| 38 | EM(NETFS_READPAGE,			"RP")		\ | 
|---|
| 39 | EM(NETFS_READ_GAPS,			"RG")		\ | 
|---|
| 40 | EM(NETFS_READ_SINGLE,			"R1")		\ | 
|---|
| 41 | EM(NETFS_READ_FOR_WRITE,		"RW")		\ | 
|---|
| 42 | EM(NETFS_UNBUFFERED_READ,		"UR")		\ | 
|---|
| 43 | EM(NETFS_DIO_READ,			"DR")		\ | 
|---|
| 44 | EM(NETFS_WRITEBACK,			"WB")		\ | 
|---|
| 45 | EM(NETFS_WRITEBACK_SINGLE,		"W1")		\ | 
|---|
| 46 | EM(NETFS_WRITETHROUGH,			"WT")		\ | 
|---|
| 47 | EM(NETFS_UNBUFFERED_WRITE,		"UW")		\ | 
|---|
| 48 | EM(NETFS_DIO_WRITE,			"DW")		\ | 
|---|
| 49 | E_(NETFS_PGPRIV2_COPY_TO_CACHE,		"2C") | 
|---|
| 50 |  | 
|---|
| 51 | #define netfs_rreq_traces					\ | 
|---|
| 52 | EM(netfs_rreq_trace_assess,		"ASSESS ")	\ | 
|---|
| 53 | EM(netfs_rreq_trace_collect,		"COLLECT")	\ | 
|---|
| 54 | EM(netfs_rreq_trace_complete,		"COMPLET")	\ | 
|---|
| 55 | EM(netfs_rreq_trace_copy,		"COPY   ")	\ | 
|---|
| 56 | EM(netfs_rreq_trace_dirty,		"DIRTY  ")	\ | 
|---|
| 57 | EM(netfs_rreq_trace_done,		"DONE   ")	\ | 
|---|
| 58 | EM(netfs_rreq_trace_end_copy_to_cache,	"END-C2C")	\ | 
|---|
| 59 | EM(netfs_rreq_trace_free,		"FREE   ")	\ | 
|---|
| 60 | EM(netfs_rreq_trace_ki_complete,	"KI-CMPL")	\ | 
|---|
| 61 | EM(netfs_rreq_trace_recollect,		"RECLLCT")	\ | 
|---|
| 62 | EM(netfs_rreq_trace_redirty,		"REDIRTY")	\ | 
|---|
| 63 | EM(netfs_rreq_trace_resubmit,		"RESUBMT")	\ | 
|---|
| 64 | EM(netfs_rreq_trace_set_abandon,	"S-ABNDN")	\ | 
|---|
| 65 | EM(netfs_rreq_trace_set_pause,		"PAUSE  ")	\ | 
|---|
| 66 | EM(netfs_rreq_trace_unlock,		"UNLOCK ")	\ | 
|---|
| 67 | EM(netfs_rreq_trace_unlock_pgpriv2,	"UNLCK-2")	\ | 
|---|
| 68 | EM(netfs_rreq_trace_unmark,		"UNMARK ")	\ | 
|---|
| 69 | EM(netfs_rreq_trace_unpause,		"UNPAUSE")	\ | 
|---|
| 70 | EM(netfs_rreq_trace_wait_ip,		"WAIT-IP")	\ | 
|---|
| 71 | EM(netfs_rreq_trace_wait_pause,		"--PAUSED--")	\ | 
|---|
| 72 | EM(netfs_rreq_trace_wait_quiesce,	"WAIT-QUIESCE")	\ | 
|---|
| 73 | EM(netfs_rreq_trace_waited_ip,		"DONE-IP")	\ | 
|---|
| 74 | EM(netfs_rreq_trace_waited_pause,	"--UNPAUSED--")	\ | 
|---|
| 75 | EM(netfs_rreq_trace_waited_quiesce,	"DONE-QUIESCE")	\ | 
|---|
| 76 | EM(netfs_rreq_trace_wake_ip,		"WAKE-IP")	\ | 
|---|
| 77 | EM(netfs_rreq_trace_wake_queue,		"WAKE-Q ")	\ | 
|---|
| 78 | E_(netfs_rreq_trace_write_done,		"WR-DONE") | 
|---|
| 79 |  | 
|---|
| 80 | #define netfs_sreq_sources					\ | 
|---|
| 81 | EM(NETFS_SOURCE_UNKNOWN,		"----")		\ | 
|---|
| 82 | EM(NETFS_FILL_WITH_ZEROES,		"ZERO")		\ | 
|---|
| 83 | EM(NETFS_DOWNLOAD_FROM_SERVER,		"DOWN")		\ | 
|---|
| 84 | EM(NETFS_READ_FROM_CACHE,		"READ")		\ | 
|---|
| 85 | EM(NETFS_INVALID_READ,			"INVL")		\ | 
|---|
| 86 | EM(NETFS_UPLOAD_TO_SERVER,		"UPLD")		\ | 
|---|
| 87 | E_(NETFS_WRITE_TO_CACHE,		"WRIT") | 
|---|
| 88 |  | 
|---|
| 89 | #define netfs_sreq_traces					\ | 
|---|
| 90 | EM(netfs_sreq_trace_abandoned,		"ABNDN")	\ | 
|---|
| 91 | EM(netfs_sreq_trace_add_donations,	"+DON ")	\ | 
|---|
| 92 | EM(netfs_sreq_trace_added,		"ADD  ")	\ | 
|---|
| 93 | EM(netfs_sreq_trace_cache_nowrite,	"CA-NW")	\ | 
|---|
| 94 | EM(netfs_sreq_trace_cache_prepare,	"CA-PR")	\ | 
|---|
| 95 | EM(netfs_sreq_trace_cache_write,	"CA-WR")	\ | 
|---|
| 96 | EM(netfs_sreq_trace_cancel,		"CANCL")	\ | 
|---|
| 97 | EM(netfs_sreq_trace_clear,		"CLEAR")	\ | 
|---|
| 98 | EM(netfs_sreq_trace_consumed,		"CONSM")	\ | 
|---|
| 99 | EM(netfs_sreq_trace_discard,		"DSCRD")	\ | 
|---|
| 100 | EM(netfs_sreq_trace_donate_to_prev,	"DON-P")	\ | 
|---|
| 101 | EM(netfs_sreq_trace_donate_to_next,	"DON-N")	\ | 
|---|
| 102 | EM(netfs_sreq_trace_download_instead,	"RDOWN")	\ | 
|---|
| 103 | EM(netfs_sreq_trace_fail,		"FAIL ")	\ | 
|---|
| 104 | EM(netfs_sreq_trace_free,		"FREE ")	\ | 
|---|
| 105 | EM(netfs_sreq_trace_hit_eof,		"EOF  ")	\ | 
|---|
| 106 | EM(netfs_sreq_trace_io_bad,		"I-BAD")	\ | 
|---|
| 107 | EM(netfs_sreq_trace_io_malformed,	"I-MLF")	\ | 
|---|
| 108 | EM(netfs_sreq_trace_io_unknown,		"I-UNK")	\ | 
|---|
| 109 | EM(netfs_sreq_trace_io_progress,	"I-OK ")	\ | 
|---|
| 110 | EM(netfs_sreq_trace_io_req_submitted,	"I-RSB")	\ | 
|---|
| 111 | EM(netfs_sreq_trace_io_retry_needed,	"I-RTR")	\ | 
|---|
| 112 | EM(netfs_sreq_trace_limited,		"LIMIT")	\ | 
|---|
| 113 | EM(netfs_sreq_trace_need_clear,		"N-CLR")	\ | 
|---|
| 114 | EM(netfs_sreq_trace_partial_read,	"PARTR")	\ | 
|---|
| 115 | EM(netfs_sreq_trace_need_retry,		"ND-RT")	\ | 
|---|
| 116 | EM(netfs_sreq_trace_prepare,		"PREP ")	\ | 
|---|
| 117 | EM(netfs_sreq_trace_prep_failed,	"PRPFL")	\ | 
|---|
| 118 | EM(netfs_sreq_trace_progress,		"PRGRS")	\ | 
|---|
| 119 | EM(netfs_sreq_trace_reprep_failed,	"REPFL")	\ | 
|---|
| 120 | EM(netfs_sreq_trace_retry,		"RETRY")	\ | 
|---|
| 121 | EM(netfs_sreq_trace_short,		"SHORT")	\ | 
|---|
| 122 | EM(netfs_sreq_trace_split,		"SPLIT")	\ | 
|---|
| 123 | EM(netfs_sreq_trace_submit,		"SUBMT")	\ | 
|---|
| 124 | EM(netfs_sreq_trace_superfluous,	"SPRFL")	\ | 
|---|
| 125 | EM(netfs_sreq_trace_terminated,		"TERM ")	\ | 
|---|
| 126 | EM(netfs_sreq_trace_wait_for,		"_WAIT")	\ | 
|---|
| 127 | EM(netfs_sreq_trace_write,		"WRITE")	\ | 
|---|
| 128 | EM(netfs_sreq_trace_write_skip,		"SKIP ")	\ | 
|---|
| 129 | E_(netfs_sreq_trace_write_term,		"WTERM") | 
|---|
| 130 |  | 
|---|
| 131 | #define netfs_failures							\ | 
|---|
| 132 | EM(netfs_fail_check_write_begin,	"check-write-begin")	\ | 
|---|
| 133 | EM(netfs_fail_copy_to_cache,		"copy-to-cache")	\ | 
|---|
| 134 | EM(netfs_fail_dio_read_short,		"dio-read-short")	\ | 
|---|
| 135 | EM(netfs_fail_dio_read_zero,		"dio-read-zero")	\ | 
|---|
| 136 | EM(netfs_fail_read,			"read")			\ | 
|---|
| 137 | EM(netfs_fail_short_read,		"short-read")		\ | 
|---|
| 138 | EM(netfs_fail_prepare_write,		"prep-write")		\ | 
|---|
| 139 | E_(netfs_fail_write,			"write") | 
|---|
| 140 |  | 
|---|
| 141 | #define netfs_rreq_ref_traces					\ | 
|---|
| 142 | EM(netfs_rreq_trace_get_for_outstanding,"GET OUTSTND")	\ | 
|---|
| 143 | EM(netfs_rreq_trace_get_subreq,		"GET SUBREQ ")	\ | 
|---|
| 144 | EM(netfs_rreq_trace_put_complete,	"PUT COMPLT ")	\ | 
|---|
| 145 | EM(netfs_rreq_trace_put_discard,	"PUT DISCARD")	\ | 
|---|
| 146 | EM(netfs_rreq_trace_put_failed,		"PUT FAILED ")	\ | 
|---|
| 147 | EM(netfs_rreq_trace_put_no_submit,	"PUT NO-SUBM")	\ | 
|---|
| 148 | EM(netfs_rreq_trace_put_return,		"PUT RETURN ")	\ | 
|---|
| 149 | EM(netfs_rreq_trace_put_subreq,		"PUT SUBREQ ")	\ | 
|---|
| 150 | EM(netfs_rreq_trace_put_work_ip,	"PUT WORK IP ")	\ | 
|---|
| 151 | EM(netfs_rreq_trace_see_work,		"SEE WORK   ")	\ | 
|---|
| 152 | EM(netfs_rreq_trace_see_work_complete,	"SEE WORK CP")	\ | 
|---|
| 153 | E_(netfs_rreq_trace_new,		"NEW        ") | 
|---|
| 154 |  | 
|---|
| 155 | #define netfs_sreq_ref_traces					\ | 
|---|
| 156 | EM(netfs_sreq_trace_get_copy_to_cache,	"GET COPY2C ")	\ | 
|---|
| 157 | EM(netfs_sreq_trace_get_resubmit,	"GET RESUBMT")	\ | 
|---|
| 158 | EM(netfs_sreq_trace_get_submit,		"GET SUBMIT ")	\ | 
|---|
| 159 | EM(netfs_sreq_trace_get_short_read,	"GET SHORTRD")	\ | 
|---|
| 160 | EM(netfs_sreq_trace_new,		"NEW        ")	\ | 
|---|
| 161 | EM(netfs_sreq_trace_put_abandon,	"PUT ABANDON")	\ | 
|---|
| 162 | EM(netfs_sreq_trace_put_cancel,		"PUT CANCEL ")	\ | 
|---|
| 163 | EM(netfs_sreq_trace_put_clear,		"PUT CLEAR  ")	\ | 
|---|
| 164 | EM(netfs_sreq_trace_put_consumed,	"PUT CONSUME")	\ | 
|---|
| 165 | EM(netfs_sreq_trace_put_done,		"PUT DONE   ")	\ | 
|---|
| 166 | EM(netfs_sreq_trace_put_failed,		"PUT FAILED ")	\ | 
|---|
| 167 | EM(netfs_sreq_trace_put_merged,		"PUT MERGED ")	\ | 
|---|
| 168 | EM(netfs_sreq_trace_put_no_copy,	"PUT NO COPY")	\ | 
|---|
| 169 | EM(netfs_sreq_trace_put_oom,		"PUT OOM    ")	\ | 
|---|
| 170 | EM(netfs_sreq_trace_put_wip,		"PUT WIP    ")	\ | 
|---|
| 171 | EM(netfs_sreq_trace_put_work,		"PUT WORK   ")	\ | 
|---|
| 172 | E_(netfs_sreq_trace_put_terminated,	"PUT TERM   ") | 
|---|
| 173 |  | 
|---|
| 174 | #define netfs_folio_traces					\ | 
|---|
| 175 | EM(netfs_folio_is_uptodate,		"mod-uptodate")	\ | 
|---|
| 176 | EM(netfs_just_prefetch,			"mod-prefetch")	\ | 
|---|
| 177 | EM(netfs_whole_folio_modify,		"mod-whole-f")	\ | 
|---|
| 178 | EM(netfs_modify_and_clear,		"mod-n-clear")	\ | 
|---|
| 179 | EM(netfs_streaming_write,		"mod-streamw")	\ | 
|---|
| 180 | EM(netfs_streaming_write_cont,		"mod-streamw+")	\ | 
|---|
| 181 | EM(netfs_flush_content,			"flush")	\ | 
|---|
| 182 | EM(netfs_streaming_filled_page,		"mod-streamw-f") \ | 
|---|
| 183 | EM(netfs_streaming_cont_filled_page,	"mod-streamw-f+") \ | 
|---|
| 184 | EM(netfs_folio_trace_abandon,		"abandon")	\ | 
|---|
| 185 | EM(netfs_folio_trace_alloc_buffer,	"alloc-buf")	\ | 
|---|
| 186 | EM(netfs_folio_trace_cancel_copy,	"cancel-copy")	\ | 
|---|
| 187 | EM(netfs_folio_trace_cancel_store,	"cancel-store")	\ | 
|---|
| 188 | EM(netfs_folio_trace_clear,		"clear")	\ | 
|---|
| 189 | EM(netfs_folio_trace_clear_cc,		"clear-cc")	\ | 
|---|
| 190 | EM(netfs_folio_trace_clear_g,		"clear-g")	\ | 
|---|
| 191 | EM(netfs_folio_trace_clear_s,		"clear-s")	\ | 
|---|
| 192 | EM(netfs_folio_trace_copy_to_cache,	"mark-copy")	\ | 
|---|
| 193 | EM(netfs_folio_trace_end_copy,		"end-copy")	\ | 
|---|
| 194 | EM(netfs_folio_trace_filled_gaps,	"filled-gaps")	\ | 
|---|
| 195 | EM(netfs_folio_trace_kill,		"kill")		\ | 
|---|
| 196 | EM(netfs_folio_trace_kill_cc,		"kill-cc")	\ | 
|---|
| 197 | EM(netfs_folio_trace_kill_g,		"kill-g")	\ | 
|---|
| 198 | EM(netfs_folio_trace_kill_s,		"kill-s")	\ | 
|---|
| 199 | EM(netfs_folio_trace_mkwrite,		"mkwrite")	\ | 
|---|
| 200 | EM(netfs_folio_trace_mkwrite_plus,	"mkwrite+")	\ | 
|---|
| 201 | EM(netfs_folio_trace_not_under_wback,	"!wback")	\ | 
|---|
| 202 | EM(netfs_folio_trace_not_locked,	"!locked")	\ | 
|---|
| 203 | EM(netfs_folio_trace_put,		"put")		\ | 
|---|
| 204 | EM(netfs_folio_trace_read,		"read")		\ | 
|---|
| 205 | EM(netfs_folio_trace_read_done,		"read-done")	\ | 
|---|
| 206 | EM(netfs_folio_trace_read_gaps,		"read-gaps")	\ | 
|---|
| 207 | EM(netfs_folio_trace_read_unlock,	"read-unlock")	\ | 
|---|
| 208 | EM(netfs_folio_trace_redirtied,		"redirtied")	\ | 
|---|
| 209 | EM(netfs_folio_trace_store,		"store")	\ | 
|---|
| 210 | EM(netfs_folio_trace_store_copy,	"store-copy")	\ | 
|---|
| 211 | EM(netfs_folio_trace_store_plus,	"store+")	\ | 
|---|
| 212 | EM(netfs_folio_trace_wthru,		"wthru")	\ | 
|---|
| 213 | E_(netfs_folio_trace_wthru_plus,	"wthru+") | 
|---|
| 214 |  | 
|---|
| 215 | #define netfs_collect_contig_traces				\ | 
|---|
| 216 | EM(netfs_contig_trace_collect,		"Collect")	\ | 
|---|
| 217 | EM(netfs_contig_trace_jump,		"-->JUMP-->")	\ | 
|---|
| 218 | E_(netfs_contig_trace_unlock,		"Unlock") | 
|---|
| 219 |  | 
|---|
| 220 | #define netfs_donate_traces					\ | 
|---|
| 221 | EM(netfs_trace_donate_tail_to_prev,	"tail-to-prev")	\ | 
|---|
| 222 | EM(netfs_trace_donate_to_prev,		"to-prev")	\ | 
|---|
| 223 | EM(netfs_trace_donate_to_next,		"to-next")	\ | 
|---|
| 224 | E_(netfs_trace_donate_to_deferred_next,	"defer-next") | 
|---|
| 225 |  | 
|---|
| 226 | #define netfs_folioq_traces					\ | 
|---|
| 227 | EM(netfs_trace_folioq_alloc_buffer,	"alloc-buf")	\ | 
|---|
| 228 | EM(netfs_trace_folioq_clear,		"clear")	\ | 
|---|
| 229 | EM(netfs_trace_folioq_delete,		"delete")	\ | 
|---|
| 230 | EM(netfs_trace_folioq_make_space,	"make-space")	\ | 
|---|
| 231 | EM(netfs_trace_folioq_rollbuf_init,	"roll-init")	\ | 
|---|
| 232 | E_(netfs_trace_folioq_read_progress,	"r-progress") | 
|---|
| 233 |  | 
|---|
| 234 | #ifndef __NETFS_DECLARE_TRACE_ENUMS_ONCE_ONLY | 
|---|
| 235 | #define __NETFS_DECLARE_TRACE_ENUMS_ONCE_ONLY | 
|---|
| 236 |  | 
|---|
| 237 | #undef EM | 
|---|
| 238 | #undef E_ | 
|---|
| 239 | #define EM(a, b) a, | 
|---|
| 240 | #define E_(a, b) a | 
|---|
| 241 |  | 
|---|
| 242 | enum netfs_read_trace { netfs_read_traces } __mode(byte); | 
|---|
| 243 | enum netfs_write_trace { netfs_write_traces } __mode(byte); | 
|---|
| 244 | enum netfs_rreq_trace { netfs_rreq_traces } __mode(byte); | 
|---|
| 245 | enum netfs_sreq_trace { netfs_sreq_traces } __mode(byte); | 
|---|
| 246 | enum netfs_failure { netfs_failures } __mode(byte); | 
|---|
| 247 | enum netfs_rreq_ref_trace { netfs_rreq_ref_traces } __mode(byte); | 
|---|
| 248 | enum netfs_sreq_ref_trace { netfs_sreq_ref_traces } __mode(byte); | 
|---|
| 249 | enum netfs_folio_trace { netfs_folio_traces } __mode(byte); | 
|---|
| 250 | enum netfs_collect_contig_trace { netfs_collect_contig_traces } __mode(byte); | 
|---|
| 251 | enum netfs_donate_trace { netfs_donate_traces } __mode(byte); | 
|---|
| 252 | enum netfs_folioq_trace { netfs_folioq_traces } __mode(byte); | 
|---|
| 253 |  | 
|---|
| 254 | #endif | 
|---|
| 255 |  | 
|---|
| 256 | /* | 
|---|
| 257 | * Export enum symbols via userspace. | 
|---|
| 258 | */ | 
|---|
| 259 | #undef EM | 
|---|
| 260 | #undef E_ | 
|---|
| 261 | #define EM(a, b) TRACE_DEFINE_ENUM(a); | 
|---|
| 262 | #define E_(a, b) TRACE_DEFINE_ENUM(a); | 
|---|
| 263 |  | 
|---|
| 264 | netfs_read_traces; | 
|---|
| 265 | netfs_write_traces; | 
|---|
| 266 | netfs_rreq_origins; | 
|---|
| 267 | netfs_rreq_traces; | 
|---|
| 268 | netfs_sreq_sources; | 
|---|
| 269 | netfs_sreq_traces; | 
|---|
| 270 | netfs_failures; | 
|---|
| 271 | netfs_rreq_ref_traces; | 
|---|
| 272 | netfs_sreq_ref_traces; | 
|---|
| 273 | netfs_folio_traces; | 
|---|
| 274 | netfs_collect_contig_traces; | 
|---|
| 275 | netfs_donate_traces; | 
|---|
| 276 | netfs_folioq_traces; | 
|---|
| 277 |  | 
|---|
| 278 | /* | 
|---|
| 279 | * Now redefine the EM() and E_() macros to map the enums to the strings that | 
|---|
| 280 | * will be printed in the output. | 
|---|
| 281 | */ | 
|---|
| 282 | #undef EM | 
|---|
| 283 | #undef E_ | 
|---|
| 284 | #define EM(a, b)	{ a, b }, | 
|---|
| 285 | #define E_(a, b)	{ a, b } | 
|---|
| 286 |  | 
|---|
| 287 | TRACE_EVENT(netfs_read, | 
|---|
| 288 | TP_PROTO(struct netfs_io_request *rreq, | 
|---|
| 289 | loff_t start, size_t len, | 
|---|
| 290 | enum netfs_read_trace what), | 
|---|
| 291 |  | 
|---|
| 292 | TP_ARGS(rreq, start, len, what), | 
|---|
| 293 |  | 
|---|
| 294 | TP_STRUCT__entry( | 
|---|
| 295 | __field(unsigned int,		rreq) | 
|---|
| 296 | __field(unsigned int,		cookie) | 
|---|
| 297 | __field(loff_t,			i_size) | 
|---|
| 298 | __field(loff_t,			start) | 
|---|
| 299 | __field(size_t,			len) | 
|---|
| 300 | __field(enum netfs_read_trace,	what) | 
|---|
| 301 | __field(unsigned int,		netfs_inode) | 
|---|
| 302 | ), | 
|---|
| 303 |  | 
|---|
| 304 | TP_fast_assign( | 
|---|
| 305 | __entry->rreq	= rreq->debug_id; | 
|---|
| 306 | __entry->cookie	= rreq->cache_resources.debug_id; | 
|---|
| 307 | __entry->i_size	= rreq->i_size; | 
|---|
| 308 | __entry->start	= start; | 
|---|
| 309 | __entry->len	= len; | 
|---|
| 310 | __entry->what	= what; | 
|---|
| 311 | __entry->netfs_inode = rreq->inode->i_ino; | 
|---|
| 312 | ), | 
|---|
| 313 |  | 
|---|
| 314 | TP_printk( "R=%08x %s c=%08x ni=%x s=%llx l=%zx sz=%llx", | 
|---|
| 315 | __entry->rreq, | 
|---|
| 316 | __print_symbolic(__entry->what, netfs_read_traces), | 
|---|
| 317 | __entry->cookie, | 
|---|
| 318 | __entry->netfs_inode, | 
|---|
| 319 | __entry->start, __entry->len, __entry->i_size) | 
|---|
| 320 | ); | 
|---|
| 321 |  | 
|---|
| 322 | TRACE_EVENT(netfs_rreq, | 
|---|
| 323 | TP_PROTO(struct netfs_io_request *rreq, | 
|---|
| 324 | enum netfs_rreq_trace what), | 
|---|
| 325 |  | 
|---|
| 326 | TP_ARGS(rreq, what), | 
|---|
| 327 |  | 
|---|
| 328 | TP_STRUCT__entry( | 
|---|
| 329 | __field(unsigned int,		rreq) | 
|---|
| 330 | __field(unsigned int,		flags) | 
|---|
| 331 | __field(enum netfs_io_origin,	origin) | 
|---|
| 332 | __field(enum netfs_rreq_trace,	what) | 
|---|
| 333 | ), | 
|---|
| 334 |  | 
|---|
| 335 | TP_fast_assign( | 
|---|
| 336 | __entry->rreq	= rreq->debug_id; | 
|---|
| 337 | __entry->flags	= rreq->flags; | 
|---|
| 338 | __entry->origin	= rreq->origin; | 
|---|
| 339 | __entry->what	= what; | 
|---|
| 340 | ), | 
|---|
| 341 |  | 
|---|
| 342 | TP_printk( "R=%08x %s %s f=%02x", | 
|---|
| 343 | __entry->rreq, | 
|---|
| 344 | __print_symbolic(__entry->origin, netfs_rreq_origins), | 
|---|
| 345 | __print_symbolic(__entry->what, netfs_rreq_traces), | 
|---|
| 346 | __entry->flags) | 
|---|
| 347 | ); | 
|---|
| 348 |  | 
|---|
| 349 | TRACE_EVENT(netfs_sreq, | 
|---|
| 350 | TP_PROTO(struct netfs_io_subrequest *sreq, | 
|---|
| 351 | enum netfs_sreq_trace what), | 
|---|
| 352 |  | 
|---|
| 353 | TP_ARGS(sreq, what), | 
|---|
| 354 |  | 
|---|
| 355 | TP_STRUCT__entry( | 
|---|
| 356 | __field(unsigned int,		rreq) | 
|---|
| 357 | __field(unsigned short,		index) | 
|---|
| 358 | __field(short,			error) | 
|---|
| 359 | __field(unsigned short,		flags) | 
|---|
| 360 | __field(enum netfs_io_source,	source) | 
|---|
| 361 | __field(enum netfs_sreq_trace,	what) | 
|---|
| 362 | __field(u8,				slot) | 
|---|
| 363 | __field(size_t,			len) | 
|---|
| 364 | __field(size_t,			transferred) | 
|---|
| 365 | __field(loff_t,			start) | 
|---|
| 366 | ), | 
|---|
| 367 |  | 
|---|
| 368 | TP_fast_assign( | 
|---|
| 369 | __entry->rreq	= sreq->rreq->debug_id; | 
|---|
| 370 | __entry->index	= sreq->debug_index; | 
|---|
| 371 | __entry->error	= sreq->error; | 
|---|
| 372 | __entry->flags	= sreq->flags; | 
|---|
| 373 | __entry->source	= sreq->source; | 
|---|
| 374 | __entry->what	= what; | 
|---|
| 375 | __entry->len	= sreq->len; | 
|---|
| 376 | __entry->transferred = sreq->transferred; | 
|---|
| 377 | __entry->start	= sreq->start; | 
|---|
| 378 | __entry->slot	= sreq->io_iter.folioq_slot; | 
|---|
| 379 | ), | 
|---|
| 380 |  | 
|---|
| 381 | TP_printk( "R=%08x[%x] %s %s f=%03x s=%llx %zx/%zx s=%u e=%d", | 
|---|
| 382 | __entry->rreq, __entry->index, | 
|---|
| 383 | __print_symbolic(__entry->source, netfs_sreq_sources), | 
|---|
| 384 | __print_symbolic(__entry->what, netfs_sreq_traces), | 
|---|
| 385 | __entry->flags, | 
|---|
| 386 | __entry->start, __entry->transferred, __entry->len, | 
|---|
| 387 | __entry->slot, __entry->error) | 
|---|
| 388 | ); | 
|---|
| 389 |  | 
|---|
| 390 | TRACE_EVENT(netfs_failure, | 
|---|
| 391 | TP_PROTO(struct netfs_io_request *rreq, | 
|---|
| 392 | struct netfs_io_subrequest *sreq, | 
|---|
| 393 | int error, enum netfs_failure what), | 
|---|
| 394 |  | 
|---|
| 395 | TP_ARGS(rreq, sreq, error, what), | 
|---|
| 396 |  | 
|---|
| 397 | TP_STRUCT__entry( | 
|---|
| 398 | __field(unsigned int,		rreq) | 
|---|
| 399 | __field(short,			index) | 
|---|
| 400 | __field(short,			error) | 
|---|
| 401 | __field(unsigned short,		flags) | 
|---|
| 402 | __field(enum netfs_io_source,	source) | 
|---|
| 403 | __field(enum netfs_failure,		what) | 
|---|
| 404 | __field(size_t,			len) | 
|---|
| 405 | __field(size_t,			transferred) | 
|---|
| 406 | __field(loff_t,			start) | 
|---|
| 407 | ), | 
|---|
| 408 |  | 
|---|
| 409 | TP_fast_assign( | 
|---|
| 410 | __entry->rreq	= rreq->debug_id; | 
|---|
| 411 | __entry->index	= sreq ? sreq->debug_index : -1; | 
|---|
| 412 | __entry->error	= error; | 
|---|
| 413 | __entry->flags	= sreq ? sreq->flags : 0; | 
|---|
| 414 | __entry->source	= sreq ? sreq->source : NETFS_INVALID_READ; | 
|---|
| 415 | __entry->what	= what; | 
|---|
| 416 | __entry->len	= sreq ? sreq->len : rreq->len; | 
|---|
| 417 | __entry->transferred = sreq ? sreq->transferred : 0; | 
|---|
| 418 | __entry->start	= sreq ? sreq->start : 0; | 
|---|
| 419 | ), | 
|---|
| 420 |  | 
|---|
| 421 | TP_printk( "R=%08x[%x] %s f=%02x s=%llx %zx/%zx %s e=%d", | 
|---|
| 422 | __entry->rreq, __entry->index, | 
|---|
| 423 | __print_symbolic(__entry->source, netfs_sreq_sources), | 
|---|
| 424 | __entry->flags, | 
|---|
| 425 | __entry->start, __entry->transferred, __entry->len, | 
|---|
| 426 | __print_symbolic(__entry->what, netfs_failures), | 
|---|
| 427 | __entry->error) | 
|---|
| 428 | ); | 
|---|
| 429 |  | 
|---|
| 430 | TRACE_EVENT(netfs_rreq_ref, | 
|---|
| 431 | TP_PROTO(unsigned int rreq_debug_id, int ref, | 
|---|
| 432 | enum netfs_rreq_ref_trace what), | 
|---|
| 433 |  | 
|---|
| 434 | TP_ARGS(rreq_debug_id, ref, what), | 
|---|
| 435 |  | 
|---|
| 436 | TP_STRUCT__entry( | 
|---|
| 437 | __field(unsigned int,		rreq) | 
|---|
| 438 | __field(int,			ref) | 
|---|
| 439 | __field(enum netfs_rreq_ref_trace,	what) | 
|---|
| 440 | ), | 
|---|
| 441 |  | 
|---|
| 442 | TP_fast_assign( | 
|---|
| 443 | __entry->rreq	= rreq_debug_id; | 
|---|
| 444 | __entry->ref	= ref; | 
|---|
| 445 | __entry->what	= what; | 
|---|
| 446 | ), | 
|---|
| 447 |  | 
|---|
| 448 | TP_printk( "R=%08x %s r=%u", | 
|---|
| 449 | __entry->rreq, | 
|---|
| 450 | __print_symbolic(__entry->what, netfs_rreq_ref_traces), | 
|---|
| 451 | __entry->ref) | 
|---|
| 452 | ); | 
|---|
| 453 |  | 
|---|
| 454 | TRACE_EVENT(netfs_sreq_ref, | 
|---|
| 455 | TP_PROTO(unsigned int rreq_debug_id, unsigned int subreq_debug_index, | 
|---|
| 456 | int ref, enum netfs_sreq_ref_trace what), | 
|---|
| 457 |  | 
|---|
| 458 | TP_ARGS(rreq_debug_id, subreq_debug_index, ref, what), | 
|---|
| 459 |  | 
|---|
| 460 | TP_STRUCT__entry( | 
|---|
| 461 | __field(unsigned int,		rreq) | 
|---|
| 462 | __field(unsigned int,		subreq) | 
|---|
| 463 | __field(int,			ref) | 
|---|
| 464 | __field(enum netfs_sreq_ref_trace,	what) | 
|---|
| 465 | ), | 
|---|
| 466 |  | 
|---|
| 467 | TP_fast_assign( | 
|---|
| 468 | __entry->rreq	= rreq_debug_id; | 
|---|
| 469 | __entry->subreq	= subreq_debug_index; | 
|---|
| 470 | __entry->ref	= ref; | 
|---|
| 471 | __entry->what	= what; | 
|---|
| 472 | ), | 
|---|
| 473 |  | 
|---|
| 474 | TP_printk( "R=%08x[%x] %s r=%u", | 
|---|
| 475 | __entry->rreq, | 
|---|
| 476 | __entry->subreq, | 
|---|
| 477 | __print_symbolic(__entry->what, netfs_sreq_ref_traces), | 
|---|
| 478 | __entry->ref) | 
|---|
| 479 | ); | 
|---|
| 480 |  | 
|---|
| 481 | TRACE_EVENT(netfs_folio, | 
|---|
| 482 | TP_PROTO(struct folio *folio, enum netfs_folio_trace why), | 
|---|
| 483 |  | 
|---|
| 484 | TP_ARGS(folio, why), | 
|---|
| 485 |  | 
|---|
| 486 | TP_STRUCT__entry( | 
|---|
| 487 | __field(ino_t,			ino) | 
|---|
| 488 | __field(pgoff_t,			index) | 
|---|
| 489 | __field(unsigned int,		nr) | 
|---|
| 490 | __field(enum netfs_folio_trace,	why) | 
|---|
| 491 | ), | 
|---|
| 492 |  | 
|---|
| 493 | TP_fast_assign( | 
|---|
| 494 | struct address_space *__m = READ_ONCE(folio->mapping); | 
|---|
| 495 | __entry->ino = __m ? __m->host->i_ino : 0; | 
|---|
| 496 | __entry->why = why; | 
|---|
| 497 | __entry->index = folio->index; | 
|---|
| 498 | __entry->nr = folio_nr_pages(folio); | 
|---|
| 499 | ), | 
|---|
| 500 |  | 
|---|
| 501 | TP_printk( "i=%05lx ix=%05lx-%05lx %s", | 
|---|
| 502 | __entry->ino, __entry->index, __entry->index + __entry->nr - 1, | 
|---|
| 503 | __print_symbolic(__entry->why, netfs_folio_traces)) | 
|---|
| 504 | ); | 
|---|
| 505 |  | 
|---|
| 506 | TRACE_EVENT(netfs_write_iter, | 
|---|
| 507 | TP_PROTO(const struct kiocb *iocb, const struct iov_iter *from), | 
|---|
| 508 |  | 
|---|
| 509 | TP_ARGS(iocb, from), | 
|---|
| 510 |  | 
|---|
| 511 | TP_STRUCT__entry( | 
|---|
| 512 | __field(unsigned long long,		start) | 
|---|
| 513 | __field(size_t,			len) | 
|---|
| 514 | __field(unsigned int,		flags) | 
|---|
| 515 | __field(unsigned int,		ino) | 
|---|
| 516 | ), | 
|---|
| 517 |  | 
|---|
| 518 | TP_fast_assign( | 
|---|
| 519 | __entry->start	= iocb->ki_pos; | 
|---|
| 520 | __entry->len	= iov_iter_count(from); | 
|---|
| 521 | __entry->ino	= iocb->ki_filp->f_inode->i_ino; | 
|---|
| 522 | __entry->flags	= iocb->ki_flags; | 
|---|
| 523 | ), | 
|---|
| 524 |  | 
|---|
| 525 | TP_printk( "WRITE-ITER i=%x s=%llx l=%zx f=%x", | 
|---|
| 526 | __entry->ino, __entry->start, __entry->len, __entry->flags) | 
|---|
| 527 | ); | 
|---|
| 528 |  | 
|---|
| 529 | TRACE_EVENT(netfs_write, | 
|---|
| 530 | TP_PROTO(const struct netfs_io_request *wreq, | 
|---|
| 531 | enum netfs_write_trace what), | 
|---|
| 532 |  | 
|---|
| 533 | TP_ARGS(wreq, what), | 
|---|
| 534 |  | 
|---|
| 535 | TP_STRUCT__entry( | 
|---|
| 536 | __field(unsigned int,		wreq) | 
|---|
| 537 | __field(unsigned int,		cookie) | 
|---|
| 538 | __field(unsigned int,		ino) | 
|---|
| 539 | __field(enum netfs_write_trace,	what) | 
|---|
| 540 | __field(unsigned long long,		start) | 
|---|
| 541 | __field(unsigned long long,		len) | 
|---|
| 542 | ), | 
|---|
| 543 |  | 
|---|
| 544 | TP_fast_assign( | 
|---|
| 545 | struct netfs_inode *__ctx = netfs_inode(wreq->inode); | 
|---|
| 546 | struct fscache_cookie *__cookie = netfs_i_cookie(__ctx); | 
|---|
| 547 | __entry->wreq	= wreq->debug_id; | 
|---|
| 548 | __entry->cookie	= __cookie ? __cookie->debug_id : 0; | 
|---|
| 549 | __entry->ino	= wreq->inode->i_ino; | 
|---|
| 550 | __entry->what	= what; | 
|---|
| 551 | __entry->start	= wreq->start; | 
|---|
| 552 | __entry->len	= wreq->len; | 
|---|
| 553 | ), | 
|---|
| 554 |  | 
|---|
| 555 | TP_printk( "R=%08x %s c=%08x i=%x by=%llx-%llx", | 
|---|
| 556 | __entry->wreq, | 
|---|
| 557 | __print_symbolic(__entry->what, netfs_write_traces), | 
|---|
| 558 | __entry->cookie, | 
|---|
| 559 | __entry->ino, | 
|---|
| 560 | __entry->start, __entry->start + __entry->len - 1) | 
|---|
| 561 | ); | 
|---|
| 562 |  | 
|---|
| 563 | TRACE_EVENT(netfs_copy2cache, | 
|---|
| 564 | TP_PROTO(const struct netfs_io_request *rreq, | 
|---|
| 565 | const struct netfs_io_request *creq), | 
|---|
| 566 |  | 
|---|
| 567 | TP_ARGS(rreq, creq), | 
|---|
| 568 |  | 
|---|
| 569 | TP_STRUCT__entry( | 
|---|
| 570 | __field(unsigned int,		rreq) | 
|---|
| 571 | __field(unsigned int,		creq) | 
|---|
| 572 | __field(unsigned int,		cookie) | 
|---|
| 573 | __field(unsigned int,		ino) | 
|---|
| 574 | ), | 
|---|
| 575 |  | 
|---|
| 576 | TP_fast_assign( | 
|---|
| 577 | struct netfs_inode *__ctx = netfs_inode(rreq->inode); | 
|---|
| 578 | struct fscache_cookie *__cookie = netfs_i_cookie(__ctx); | 
|---|
| 579 | __entry->rreq	= rreq->debug_id; | 
|---|
| 580 | __entry->creq	= creq->debug_id; | 
|---|
| 581 | __entry->cookie	= __cookie ? __cookie->debug_id : 0; | 
|---|
| 582 | __entry->ino	= rreq->inode->i_ino; | 
|---|
| 583 | ), | 
|---|
| 584 |  | 
|---|
| 585 | TP_printk( "R=%08x CR=%08x c=%08x i=%x ", | 
|---|
| 586 | __entry->rreq, | 
|---|
| 587 | __entry->creq, | 
|---|
| 588 | __entry->cookie, | 
|---|
| 589 | __entry->ino) | 
|---|
| 590 | ); | 
|---|
| 591 |  | 
|---|
| 592 | TRACE_EVENT(netfs_collect, | 
|---|
| 593 | TP_PROTO(const struct netfs_io_request *wreq), | 
|---|
| 594 |  | 
|---|
| 595 | TP_ARGS(wreq), | 
|---|
| 596 |  | 
|---|
| 597 | TP_STRUCT__entry( | 
|---|
| 598 | __field(unsigned int,		wreq) | 
|---|
| 599 | __field(unsigned int,		len) | 
|---|
| 600 | __field(unsigned long long,		transferred) | 
|---|
| 601 | __field(unsigned long long,		start) | 
|---|
| 602 | ), | 
|---|
| 603 |  | 
|---|
| 604 | TP_fast_assign( | 
|---|
| 605 | __entry->wreq	= wreq->debug_id; | 
|---|
| 606 | __entry->start	= wreq->start; | 
|---|
| 607 | __entry->len	= wreq->len; | 
|---|
| 608 | __entry->transferred = wreq->transferred; | 
|---|
| 609 | ), | 
|---|
| 610 |  | 
|---|
| 611 | TP_printk( "R=%08x s=%llx-%llx", | 
|---|
| 612 | __entry->wreq, | 
|---|
| 613 | __entry->start + __entry->transferred, | 
|---|
| 614 | __entry->start + __entry->len) | 
|---|
| 615 | ); | 
|---|
| 616 |  | 
|---|
| 617 | TRACE_EVENT(netfs_collect_sreq, | 
|---|
| 618 | TP_PROTO(const struct netfs_io_request *wreq, | 
|---|
| 619 | const struct netfs_io_subrequest *subreq), | 
|---|
| 620 |  | 
|---|
| 621 | TP_ARGS(wreq, subreq), | 
|---|
| 622 |  | 
|---|
| 623 | TP_STRUCT__entry( | 
|---|
| 624 | __field(unsigned int,		wreq) | 
|---|
| 625 | __field(unsigned int,		subreq) | 
|---|
| 626 | __field(unsigned int,		stream) | 
|---|
| 627 | __field(unsigned int,		len) | 
|---|
| 628 | __field(unsigned int,		transferred) | 
|---|
| 629 | __field(unsigned long long,		start) | 
|---|
| 630 | ), | 
|---|
| 631 |  | 
|---|
| 632 | TP_fast_assign( | 
|---|
| 633 | __entry->wreq	= wreq->debug_id; | 
|---|
| 634 | __entry->subreq	= subreq->debug_index; | 
|---|
| 635 | __entry->stream	= subreq->stream_nr; | 
|---|
| 636 | __entry->start	= subreq->start; | 
|---|
| 637 | __entry->len	= subreq->len; | 
|---|
| 638 | __entry->transferred = subreq->transferred; | 
|---|
| 639 | ), | 
|---|
| 640 |  | 
|---|
| 641 | TP_printk( "R=%08x[%u:%02x] s=%llx t=%x/%x", | 
|---|
| 642 | __entry->wreq, __entry->stream, __entry->subreq, | 
|---|
| 643 | __entry->start, __entry->transferred, __entry->len) | 
|---|
| 644 | ); | 
|---|
| 645 |  | 
|---|
| 646 | TRACE_EVENT(netfs_collect_folio, | 
|---|
| 647 | TP_PROTO(const struct netfs_io_request *wreq, | 
|---|
| 648 | const struct folio *folio, | 
|---|
| 649 | unsigned long long fend, | 
|---|
| 650 | unsigned long long collected_to), | 
|---|
| 651 |  | 
|---|
| 652 | TP_ARGS(wreq, folio, fend, collected_to), | 
|---|
| 653 |  | 
|---|
| 654 | TP_STRUCT__entry( | 
|---|
| 655 | __field(unsigned int,	wreq) | 
|---|
| 656 | __field(unsigned long,	index) | 
|---|
| 657 | __field(unsigned long long,	fend) | 
|---|
| 658 | __field(unsigned long long,	cleaned_to) | 
|---|
| 659 | __field(unsigned long long,	collected_to) | 
|---|
| 660 | ), | 
|---|
| 661 |  | 
|---|
| 662 | TP_fast_assign( | 
|---|
| 663 | __entry->wreq	= wreq->debug_id; | 
|---|
| 664 | __entry->index	= folio->index; | 
|---|
| 665 | __entry->fend	= fend; | 
|---|
| 666 | __entry->cleaned_to	= wreq->cleaned_to; | 
|---|
| 667 | __entry->collected_to = collected_to; | 
|---|
| 668 | ), | 
|---|
| 669 |  | 
|---|
| 670 | TP_printk( "R=%08x ix=%05lx r=%llx-%llx t=%llx/%llx", | 
|---|
| 671 | __entry->wreq, __entry->index, | 
|---|
| 672 | (unsigned long long)__entry->index * PAGE_SIZE, __entry->fend, | 
|---|
| 673 | __entry->cleaned_to, __entry->collected_to) | 
|---|
| 674 | ); | 
|---|
| 675 |  | 
|---|
| 676 | TRACE_EVENT(netfs_collect_state, | 
|---|
| 677 | TP_PROTO(const struct netfs_io_request *wreq, | 
|---|
| 678 | unsigned long long collected_to, | 
|---|
| 679 | unsigned int notes), | 
|---|
| 680 |  | 
|---|
| 681 | TP_ARGS(wreq, collected_to, notes), | 
|---|
| 682 |  | 
|---|
| 683 | TP_STRUCT__entry( | 
|---|
| 684 | __field(unsigned int,	wreq) | 
|---|
| 685 | __field(unsigned int,	notes) | 
|---|
| 686 | __field(unsigned long long,	collected_to) | 
|---|
| 687 | __field(unsigned long long,	cleaned_to) | 
|---|
| 688 | ), | 
|---|
| 689 |  | 
|---|
| 690 | TP_fast_assign( | 
|---|
| 691 | __entry->wreq	= wreq->debug_id; | 
|---|
| 692 | __entry->notes	= notes; | 
|---|
| 693 | __entry->collected_to = collected_to; | 
|---|
| 694 | __entry->cleaned_to	= wreq->cleaned_to; | 
|---|
| 695 | ), | 
|---|
| 696 |  | 
|---|
| 697 | TP_printk( "R=%08x col=%llx cln=%llx n=%x", | 
|---|
| 698 | __entry->wreq, __entry->collected_to, | 
|---|
| 699 | __entry->cleaned_to, | 
|---|
| 700 | __entry->notes) | 
|---|
| 701 | ); | 
|---|
| 702 |  | 
|---|
| 703 | TRACE_EVENT(netfs_collect_gap, | 
|---|
| 704 | TP_PROTO(const struct netfs_io_request *wreq, | 
|---|
| 705 | const struct netfs_io_stream *stream, | 
|---|
| 706 | unsigned long long jump_to, char type), | 
|---|
| 707 |  | 
|---|
| 708 | TP_ARGS(wreq, stream, jump_to, type), | 
|---|
| 709 |  | 
|---|
| 710 | TP_STRUCT__entry( | 
|---|
| 711 | __field(unsigned int,	wreq) | 
|---|
| 712 | __field(unsigned char,	stream) | 
|---|
| 713 | __field(unsigned char,	type) | 
|---|
| 714 | __field(unsigned long long,	from) | 
|---|
| 715 | __field(unsigned long long,	to) | 
|---|
| 716 | ), | 
|---|
| 717 |  | 
|---|
| 718 | TP_fast_assign( | 
|---|
| 719 | __entry->wreq	= wreq->debug_id; | 
|---|
| 720 | __entry->stream	= stream->stream_nr; | 
|---|
| 721 | __entry->from	= stream->collected_to; | 
|---|
| 722 | __entry->to		= jump_to; | 
|---|
| 723 | __entry->type	= type; | 
|---|
| 724 | ), | 
|---|
| 725 |  | 
|---|
| 726 | TP_printk( "R=%08x[%x:] %llx->%llx %c", | 
|---|
| 727 | __entry->wreq, __entry->stream, | 
|---|
| 728 | __entry->from, __entry->to, __entry->type) | 
|---|
| 729 | ); | 
|---|
| 730 |  | 
|---|
| 731 | TRACE_EVENT(netfs_collect_stream, | 
|---|
| 732 | TP_PROTO(const struct netfs_io_request *wreq, | 
|---|
| 733 | const struct netfs_io_stream *stream), | 
|---|
| 734 |  | 
|---|
| 735 | TP_ARGS(wreq, stream), | 
|---|
| 736 |  | 
|---|
| 737 | TP_STRUCT__entry( | 
|---|
| 738 | __field(unsigned int,	wreq) | 
|---|
| 739 | __field(unsigned char,	stream) | 
|---|
| 740 | __field(unsigned long long,	collected_to) | 
|---|
| 741 | __field(unsigned long long,	front) | 
|---|
| 742 | ), | 
|---|
| 743 |  | 
|---|
| 744 | TP_fast_assign( | 
|---|
| 745 | __entry->wreq	= wreq->debug_id; | 
|---|
| 746 | __entry->stream	= stream->stream_nr; | 
|---|
| 747 | __entry->collected_to = stream->collected_to; | 
|---|
| 748 | __entry->front	= stream->front ? stream->front->start : UINT_MAX; | 
|---|
| 749 | ), | 
|---|
| 750 |  | 
|---|
| 751 | TP_printk( "R=%08x[%x:] cto=%llx frn=%llx", | 
|---|
| 752 | __entry->wreq, __entry->stream, | 
|---|
| 753 | __entry->collected_to, __entry->front) | 
|---|
| 754 | ); | 
|---|
| 755 |  | 
|---|
| 756 | TRACE_EVENT(netfs_folioq, | 
|---|
| 757 | TP_PROTO(const struct folio_queue *fq, | 
|---|
| 758 | enum netfs_folioq_trace trace), | 
|---|
| 759 |  | 
|---|
| 760 | TP_ARGS(fq, trace), | 
|---|
| 761 |  | 
|---|
| 762 | TP_STRUCT__entry( | 
|---|
| 763 | __field(unsigned int,		rreq) | 
|---|
| 764 | __field(unsigned int,		id) | 
|---|
| 765 | __field(enum netfs_folioq_trace,	trace) | 
|---|
| 766 | ), | 
|---|
| 767 |  | 
|---|
| 768 | TP_fast_assign( | 
|---|
| 769 | __entry->rreq	= fq ? fq->rreq_id : 0; | 
|---|
| 770 | __entry->id		= fq ? fq->debug_id : 0; | 
|---|
| 771 | __entry->trace	= trace; | 
|---|
| 772 | ), | 
|---|
| 773 |  | 
|---|
| 774 | TP_printk( "R=%08x fq=%x %s", | 
|---|
| 775 | __entry->rreq, __entry->id, | 
|---|
| 776 | __print_symbolic(__entry->trace, netfs_folioq_traces)) | 
|---|
| 777 | ); | 
|---|
| 778 |  | 
|---|
| 779 | #undef EM | 
|---|
| 780 | #undef E_ | 
|---|
| 781 | #endif /* _TRACE_NETFS_H */ | 
|---|
| 782 |  | 
|---|
| 783 | /* This part must be outside protection */ | 
|---|
| 784 | #include <trace/define_trace.h> | 
|---|
| 785 |  | 
|---|