netfs.h (0e0f2dfe880fb19e4b15a7ca468623eb0b4ba586) netfs.h (c38f4e96e605f17990e871214e6ea1496bc4e65f)
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

--- 5 unchanged lines hidden (view full) ---

14
15/*
16 * Define enums for tracing information.
17 */
18#define netfs_read_traces \
19 EM(netfs_read_trace_expanded, "EXPANDED ") \
20 EM(netfs_read_trace_readahead, "READAHEAD") \
21 EM(netfs_read_trace_readpage, "READPAGE ") \
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

--- 5 unchanged lines hidden (view full) ---

14
15/*
16 * Define enums for tracing information.
17 */
18#define netfs_read_traces \
19 EM(netfs_read_trace_expanded, "EXPANDED ") \
20 EM(netfs_read_trace_readahead, "READAHEAD") \
21 EM(netfs_read_trace_readpage, "READPAGE ") \
22 EM(netfs_read_trace_prefetch_for_write, "PREFETCHW") \
22 E_(netfs_read_trace_write_begin, "WRITEBEGN")
23
24#define netfs_write_traces \
25 EM(netfs_write_trace_dio_write, "DIO-WRITE") \
26 EM(netfs_write_trace_unbuffered_write, "UNB-WRITE") \
27 E_(netfs_write_trace_writeback, "WRITEBACK")
28
29#define netfs_rreq_origins \

--- 65 unchanged lines hidden (view full) ---

95 EM(netfs_sreq_trace_put_discard, "PUT DISCARD") \
96 EM(netfs_sreq_trace_put_failed, "PUT FAILED ") \
97 EM(netfs_sreq_trace_put_merged, "PUT MERGED ") \
98 EM(netfs_sreq_trace_put_no_copy, "PUT NO COPY") \
99 EM(netfs_sreq_trace_put_wip, "PUT WIP ") \
100 EM(netfs_sreq_trace_put_work, "PUT WORK ") \
101 E_(netfs_sreq_trace_put_terminated, "PUT TERM ")
102
23 E_(netfs_read_trace_write_begin, "WRITEBEGN")
24
25#define netfs_write_traces \
26 EM(netfs_write_trace_dio_write, "DIO-WRITE") \
27 EM(netfs_write_trace_unbuffered_write, "UNB-WRITE") \
28 E_(netfs_write_trace_writeback, "WRITEBACK")
29
30#define netfs_rreq_origins \

--- 65 unchanged lines hidden (view full) ---

96 EM(netfs_sreq_trace_put_discard, "PUT DISCARD") \
97 EM(netfs_sreq_trace_put_failed, "PUT FAILED ") \
98 EM(netfs_sreq_trace_put_merged, "PUT MERGED ") \
99 EM(netfs_sreq_trace_put_no_copy, "PUT NO COPY") \
100 EM(netfs_sreq_trace_put_wip, "PUT WIP ") \
101 EM(netfs_sreq_trace_put_work, "PUT WORK ") \
102 E_(netfs_sreq_trace_put_terminated, "PUT TERM ")
103
104#define netfs_folio_traces \
105 /* The first few correspond to enum netfs_how_to_modify */ \
106 EM(netfs_folio_is_uptodate, "mod-uptodate") \
107 EM(netfs_just_prefetch, "mod-prefetch") \
108 EM(netfs_whole_folio_modify, "mod-whole-f") \
109 EM(netfs_modify_and_clear, "mod-n-clear") \
110 EM(netfs_streaming_write, "mod-streamw") \
111 EM(netfs_streaming_write_cont, "mod-streamw+") \
112 EM(netfs_flush_content, "flush") \
113 EM(netfs_streaming_filled_page, "mod-streamw-f") \
114 EM(netfs_streaming_cont_filled_page, "mod-streamw-f+") \
115 /* The rest are for writeback */ \
116 EM(netfs_folio_trace_clear, "clear") \
117 EM(netfs_folio_trace_clear_s, "clear-s") \
118 EM(netfs_folio_trace_clear_g, "clear-g") \
119 EM(netfs_folio_trace_copy_to_cache, "copy") \
120 EM(netfs_folio_trace_end_copy, "end-copy") \
121 EM(netfs_folio_trace_kill, "kill") \
122 EM(netfs_folio_trace_mkwrite, "mkwrite") \
123 EM(netfs_folio_trace_mkwrite_plus, "mkwrite+") \
124 EM(netfs_folio_trace_redirty, "redirty") \
125 EM(netfs_folio_trace_redirtied, "redirtied") \
126 EM(netfs_folio_trace_store, "store") \
127 E_(netfs_folio_trace_store_plus, "store+")
128
103#ifndef __NETFS_DECLARE_TRACE_ENUMS_ONCE_ONLY
104#define __NETFS_DECLARE_TRACE_ENUMS_ONCE_ONLY
105
106#undef EM
107#undef E_
108#define EM(a, b) a,
109#define E_(a, b) a
110
111enum netfs_read_trace { netfs_read_traces } __mode(byte);
112enum netfs_write_trace { netfs_write_traces } __mode(byte);
113enum netfs_rreq_trace { netfs_rreq_traces } __mode(byte);
114enum netfs_sreq_trace { netfs_sreq_traces } __mode(byte);
115enum netfs_failure { netfs_failures } __mode(byte);
116enum netfs_rreq_ref_trace { netfs_rreq_ref_traces } __mode(byte);
117enum netfs_sreq_ref_trace { netfs_sreq_ref_traces } __mode(byte);
129#ifndef __NETFS_DECLARE_TRACE_ENUMS_ONCE_ONLY
130#define __NETFS_DECLARE_TRACE_ENUMS_ONCE_ONLY
131
132#undef EM
133#undef E_
134#define EM(a, b) a,
135#define E_(a, b) a
136
137enum netfs_read_trace { netfs_read_traces } __mode(byte);
138enum netfs_write_trace { netfs_write_traces } __mode(byte);
139enum netfs_rreq_trace { netfs_rreq_traces } __mode(byte);
140enum netfs_sreq_trace { netfs_sreq_traces } __mode(byte);
141enum netfs_failure { netfs_failures } __mode(byte);
142enum netfs_rreq_ref_trace { netfs_rreq_ref_traces } __mode(byte);
143enum netfs_sreq_ref_trace { netfs_sreq_ref_traces } __mode(byte);
144enum netfs_folio_trace { netfs_folio_traces } __mode(byte);
118
119#endif
120
121/*
122 * Export enum symbols via userspace.
123 */
124#undef EM
125#undef E_

--- 4 unchanged lines hidden (view full) ---

130netfs_write_traces;
131netfs_rreq_origins;
132netfs_rreq_traces;
133netfs_sreq_sources;
134netfs_sreq_traces;
135netfs_failures;
136netfs_rreq_ref_traces;
137netfs_sreq_ref_traces;
145
146#endif
147
148/*
149 * Export enum symbols via userspace.
150 */
151#undef EM
152#undef E_

--- 4 unchanged lines hidden (view full) ---

157netfs_write_traces;
158netfs_rreq_origins;
159netfs_rreq_traces;
160netfs_sreq_sources;
161netfs_sreq_traces;
162netfs_failures;
163netfs_rreq_ref_traces;
164netfs_sreq_ref_traces;
165netfs_folio_traces;
138
139/*
140 * Now redefine the EM() and E_() macros to map the enums to the strings that
141 * will be printed in the output.
142 */
143#undef EM
144#undef E_
145#define EM(a, b) { a, b },

--- 184 unchanged lines hidden (view full) ---

330
331 TP_printk("R=%08x[%x] %s r=%u",
332 __entry->rreq,
333 __entry->subreq,
334 __print_symbolic(__entry->what, netfs_sreq_ref_traces),
335 __entry->ref)
336 );
337
166
167/*
168 * Now redefine the EM() and E_() macros to map the enums to the strings that
169 * will be printed in the output.
170 */
171#undef EM
172#undef E_
173#define EM(a, b) { a, b },

--- 184 unchanged lines hidden (view full) ---

358
359 TP_printk("R=%08x[%x] %s r=%u",
360 __entry->rreq,
361 __entry->subreq,
362 __print_symbolic(__entry->what, netfs_sreq_ref_traces),
363 __entry->ref)
364 );
365
366TRACE_EVENT(netfs_folio,
367 TP_PROTO(struct folio *folio, enum netfs_folio_trace why),
368
369 TP_ARGS(folio, why),
370
371 TP_STRUCT__entry(
372 __field(ino_t, ino)
373 __field(pgoff_t, index)
374 __field(unsigned int, nr)
375 __field(enum netfs_folio_trace, why)
376 ),
377
378 TP_fast_assign(
379 __entry->ino = folio->mapping->host->i_ino;
380 __entry->why = why;
381 __entry->index = folio_index(folio);
382 __entry->nr = folio_nr_pages(folio);
383 ),
384
385 TP_printk("i=%05lx ix=%05lx-%05lx %s",
386 __entry->ino, __entry->index, __entry->index + __entry->nr - 1,
387 __print_symbolic(__entry->why, netfs_folio_traces))
388 );
389
390TRACE_EVENT(netfs_write_iter,
391 TP_PROTO(const struct kiocb *iocb, const struct iov_iter *from),
392
393 TP_ARGS(iocb, from),
394
395 TP_STRUCT__entry(
396 __field(unsigned long long, start )
397 __field(size_t, len )
398 __field(unsigned int, flags )
399 ),
400
401 TP_fast_assign(
402 __entry->start = iocb->ki_pos;
403 __entry->len = iov_iter_count(from);
404 __entry->flags = iocb->ki_flags;
405 ),
406
407 TP_printk("WRITE-ITER s=%llx l=%zx f=%x",
408 __entry->start, __entry->len, __entry->flags)
409 );
410
338TRACE_EVENT(netfs_write,
339 TP_PROTO(const struct netfs_io_request *wreq,
340 enum netfs_write_trace what),
341
342 TP_ARGS(wreq, what),
343
344 TP_STRUCT__entry(
345 __field(unsigned int, wreq )

--- 29 unchanged lines hidden ---
411TRACE_EVENT(netfs_write,
412 TP_PROTO(const struct netfs_io_request *wreq,
413 enum netfs_write_trace what),
414
415 TP_ARGS(wreq, what),
416
417 TP_STRUCT__entry(
418 __field(unsigned int, wreq )

--- 29 unchanged lines hidden ---