xref: /openbmc/linux/fs/nfsd/trace.h (revision afa720a0)
1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */
231ef83dcSChristoph Hellwig /*
331ef83dcSChristoph Hellwig  * Copyright (c) 2014 Christoph Hellwig.
431ef83dcSChristoph Hellwig  */
531ef83dcSChristoph Hellwig #undef TRACE_SYSTEM
631ef83dcSChristoph Hellwig #define TRACE_SYSTEM nfsd
731ef83dcSChristoph Hellwig 
831ef83dcSChristoph Hellwig #if !defined(_NFSD_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
931ef83dcSChristoph Hellwig #define _NFSD_TRACE_H
1031ef83dcSChristoph Hellwig 
1131ef83dcSChristoph Hellwig #include <linux/tracepoint.h>
126e8b50d1SJeff Layton #include "nfsfh.h"
136e8b50d1SJeff Layton 
146e8b50d1SJeff Layton DECLARE_EVENT_CLASS(nfsd_io_class,
156e8b50d1SJeff Layton 	TP_PROTO(struct svc_rqst *rqstp,
166e8b50d1SJeff Layton 		 struct svc_fh	*fhp,
176e8b50d1SJeff Layton 		 loff_t		offset,
186e8b50d1SJeff Layton 		 int		len),
196e8b50d1SJeff Layton 	TP_ARGS(rqstp, fhp, offset, len),
206e8b50d1SJeff Layton 	TP_STRUCT__entry(
21afa720a0SChuck Lever 		__field(u32, xid)
22afa720a0SChuck Lever 		__field(u32, fh_hash)
236e8b50d1SJeff Layton 		__field(loff_t, offset)
246e8b50d1SJeff Layton 		__field(int, len)
256e8b50d1SJeff Layton 	),
266e8b50d1SJeff Layton 	TP_fast_assign(
27afa720a0SChuck Lever 		__entry->xid = be32_to_cpu(rqstp->rq_xid);
28afa720a0SChuck Lever 		do {
29afa720a0SChuck Lever 			struct knfsd_fh fh;
30afa720a0SChuck Lever 
31afa720a0SChuck Lever 			fh_copy_shallow(&fh, &fhp->fh_handle);
32afa720a0SChuck Lever 			__entry->fh_hash = knfsd_fh_hash(&fh);
33afa720a0SChuck Lever 		} while (0);
346e8b50d1SJeff Layton 		__entry->offset = offset;
356e8b50d1SJeff Layton 		__entry->len = len;
366e8b50d1SJeff Layton 	),
37afa720a0SChuck Lever 	TP_printk("xid=0x%08x fh_hash=0x%08x offset=%lld len=%d",
38afa720a0SChuck Lever 		  __entry->xid, __entry->fh_hash,
396e8b50d1SJeff Layton 		  __entry->offset, __entry->len)
406e8b50d1SJeff Layton )
416e8b50d1SJeff Layton 
426e8b50d1SJeff Layton #define DEFINE_NFSD_IO_EVENT(name)		\
436e8b50d1SJeff Layton DEFINE_EVENT(nfsd_io_class, name,		\
446e8b50d1SJeff Layton 	TP_PROTO(struct svc_rqst *rqstp,	\
456e8b50d1SJeff Layton 		 struct svc_fh	*fhp,		\
466e8b50d1SJeff Layton 		 loff_t		offset,		\
476e8b50d1SJeff Layton 		 int		len),		\
486e8b50d1SJeff Layton 	TP_ARGS(rqstp, fhp, offset, len))
496e8b50d1SJeff Layton 
506e8b50d1SJeff Layton DEFINE_NFSD_IO_EVENT(read_start);
516e8b50d1SJeff Layton DEFINE_NFSD_IO_EVENT(read_opened);
526e8b50d1SJeff Layton DEFINE_NFSD_IO_EVENT(read_io_done);
536e8b50d1SJeff Layton DEFINE_NFSD_IO_EVENT(read_done);
546e8b50d1SJeff Layton DEFINE_NFSD_IO_EVENT(write_start);
556e8b50d1SJeff Layton DEFINE_NFSD_IO_EVENT(write_opened);
566e8b50d1SJeff Layton DEFINE_NFSD_IO_EVENT(write_io_done);
576e8b50d1SJeff Layton DEFINE_NFSD_IO_EVENT(write_done);
5831ef83dcSChristoph Hellwig 
59825213e5SJeff Layton #include "state.h"
60825213e5SJeff Layton 
6131ef83dcSChristoph Hellwig DECLARE_EVENT_CLASS(nfsd_stateid_class,
6231ef83dcSChristoph Hellwig 	TP_PROTO(stateid_t *stp),
6331ef83dcSChristoph Hellwig 	TP_ARGS(stp),
6431ef83dcSChristoph Hellwig 	TP_STRUCT__entry(
6531ef83dcSChristoph Hellwig 		__field(u32, cl_boot)
6631ef83dcSChristoph Hellwig 		__field(u32, cl_id)
6731ef83dcSChristoph Hellwig 		__field(u32, si_id)
6831ef83dcSChristoph Hellwig 		__field(u32, si_generation)
6931ef83dcSChristoph Hellwig 	),
7031ef83dcSChristoph Hellwig 	TP_fast_assign(
7131ef83dcSChristoph Hellwig 		__entry->cl_boot = stp->si_opaque.so_clid.cl_boot;
7231ef83dcSChristoph Hellwig 		__entry->cl_id = stp->si_opaque.so_clid.cl_id;
7331ef83dcSChristoph Hellwig 		__entry->si_id = stp->si_opaque.so_id;
7431ef83dcSChristoph Hellwig 		__entry->si_generation = stp->si_generation;
7531ef83dcSChristoph Hellwig 	),
7631ef83dcSChristoph Hellwig 	TP_printk("client %08x:%08x stateid %08x:%08x",
7731ef83dcSChristoph Hellwig 		__entry->cl_boot,
7831ef83dcSChristoph Hellwig 		__entry->cl_id,
7931ef83dcSChristoph Hellwig 		__entry->si_id,
8031ef83dcSChristoph Hellwig 		__entry->si_generation)
8131ef83dcSChristoph Hellwig )
8231ef83dcSChristoph Hellwig 
8331ef83dcSChristoph Hellwig #define DEFINE_STATEID_EVENT(name) \
8431ef83dcSChristoph Hellwig DEFINE_EVENT(nfsd_stateid_class, name, \
8531ef83dcSChristoph Hellwig 	TP_PROTO(stateid_t *stp), \
8631ef83dcSChristoph Hellwig 	TP_ARGS(stp))
8731ef83dcSChristoph Hellwig DEFINE_STATEID_EVENT(layoutstate_alloc);
8831ef83dcSChristoph Hellwig DEFINE_STATEID_EVENT(layoutstate_unhash);
8931ef83dcSChristoph Hellwig DEFINE_STATEID_EVENT(layoutstate_free);
9031ef83dcSChristoph Hellwig DEFINE_STATEID_EVENT(layout_get_lookup_fail);
9131ef83dcSChristoph Hellwig DEFINE_STATEID_EVENT(layout_commit_lookup_fail);
9231ef83dcSChristoph Hellwig DEFINE_STATEID_EVENT(layout_return_lookup_fail);
9331ef83dcSChristoph Hellwig DEFINE_STATEID_EVENT(layout_recall);
9431ef83dcSChristoph Hellwig DEFINE_STATEID_EVENT(layout_recall_done);
9531ef83dcSChristoph Hellwig DEFINE_STATEID_EVENT(layout_recall_fail);
9631ef83dcSChristoph Hellwig DEFINE_STATEID_EVENT(layout_recall_release);
9731ef83dcSChristoph Hellwig 
9831ef83dcSChristoph Hellwig #endif /* _NFSD_TRACE_H */
9931ef83dcSChristoph Hellwig 
10031ef83dcSChristoph Hellwig #undef TRACE_INCLUDE_PATH
10131ef83dcSChristoph Hellwig #define TRACE_INCLUDE_PATH .
10231ef83dcSChristoph Hellwig #define TRACE_INCLUDE_FILE trace
10331ef83dcSChristoph Hellwig #include <trace/define_trace.h>
104