xref: /openbmc/linux/fs/nfsd/trace.h (revision d890be15)
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,
1879e0b4e2SChuck Lever 		 unsigned long	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)
2479e0b4e2SChuck Lever 		__field(unsigned long, len)
256e8b50d1SJeff Layton 	),
266e8b50d1SJeff Layton 	TP_fast_assign(
27afa720a0SChuck Lever 		__entry->xid = be32_to_cpu(rqstp->rq_xid);
2879e0b4e2SChuck Lever 		__entry->fh_hash = knfsd_fh_hash(&fhp->fh_handle);
296e8b50d1SJeff Layton 		__entry->offset = offset;
306e8b50d1SJeff Layton 		__entry->len = len;
316e8b50d1SJeff Layton 	),
3279e0b4e2SChuck Lever 	TP_printk("xid=0x%08x fh_hash=0x%08x offset=%lld len=%lu",
33afa720a0SChuck Lever 		  __entry->xid, __entry->fh_hash,
346e8b50d1SJeff Layton 		  __entry->offset, __entry->len)
356e8b50d1SJeff Layton )
366e8b50d1SJeff Layton 
376e8b50d1SJeff Layton #define DEFINE_NFSD_IO_EVENT(name)		\
38f394b62bSChuck Lever DEFINE_EVENT(nfsd_io_class, nfsd_##name,	\
396e8b50d1SJeff Layton 	TP_PROTO(struct svc_rqst *rqstp,	\
406e8b50d1SJeff Layton 		 struct svc_fh	*fhp,		\
416e8b50d1SJeff Layton 		 loff_t		offset,		\
4279e0b4e2SChuck Lever 		 unsigned long	len),		\
436e8b50d1SJeff Layton 	TP_ARGS(rqstp, fhp, offset, len))
446e8b50d1SJeff Layton 
456e8b50d1SJeff Layton DEFINE_NFSD_IO_EVENT(read_start);
466e8b50d1SJeff Layton DEFINE_NFSD_IO_EVENT(read_opened);
476e8b50d1SJeff Layton DEFINE_NFSD_IO_EVENT(read_io_done);
486e8b50d1SJeff Layton DEFINE_NFSD_IO_EVENT(read_done);
496e8b50d1SJeff Layton DEFINE_NFSD_IO_EVENT(write_start);
506e8b50d1SJeff Layton DEFINE_NFSD_IO_EVENT(write_opened);
516e8b50d1SJeff Layton DEFINE_NFSD_IO_EVENT(write_io_done);
526e8b50d1SJeff Layton DEFINE_NFSD_IO_EVENT(write_done);
5331ef83dcSChristoph Hellwig 
54d890be15SChuck Lever DECLARE_EVENT_CLASS(nfsd_err_class,
55d890be15SChuck Lever 	TP_PROTO(struct svc_rqst *rqstp,
56d890be15SChuck Lever 		 struct svc_fh	*fhp,
57d890be15SChuck Lever 		 loff_t		offset,
58d890be15SChuck Lever 		 int		status),
59d890be15SChuck Lever 	TP_ARGS(rqstp, fhp, offset, status),
60d890be15SChuck Lever 	TP_STRUCT__entry(
61d890be15SChuck Lever 		__field(u32, xid)
62d890be15SChuck Lever 		__field(u32, fh_hash)
63d890be15SChuck Lever 		__field(loff_t, offset)
64d890be15SChuck Lever 		__field(int, status)
65d890be15SChuck Lever 	),
66d890be15SChuck Lever 	TP_fast_assign(
67d890be15SChuck Lever 		__entry->xid = be32_to_cpu(rqstp->rq_xid);
68d890be15SChuck Lever 		__entry->fh_hash = knfsd_fh_hash(&fhp->fh_handle);
69d890be15SChuck Lever 		__entry->offset = offset;
70d890be15SChuck Lever 		__entry->status = status;
71d890be15SChuck Lever 	),
72d890be15SChuck Lever 	TP_printk("xid=0x%08x fh_hash=0x%08x offset=%lld status=%d",
73d890be15SChuck Lever 		  __entry->xid, __entry->fh_hash,
74d890be15SChuck Lever 		  __entry->offset, __entry->status)
75d890be15SChuck Lever )
76d890be15SChuck Lever 
77d890be15SChuck Lever #define DEFINE_NFSD_ERR_EVENT(name)		\
78d890be15SChuck Lever DEFINE_EVENT(nfsd_err_class, nfsd_##name,	\
79d890be15SChuck Lever 	TP_PROTO(struct svc_rqst *rqstp,	\
80d890be15SChuck Lever 		 struct svc_fh	*fhp,		\
81d890be15SChuck Lever 		 loff_t		offset,		\
82d890be15SChuck Lever 		 int		len),		\
83d890be15SChuck Lever 	TP_ARGS(rqstp, fhp, offset, len))
84d890be15SChuck Lever 
85d890be15SChuck Lever DEFINE_NFSD_ERR_EVENT(write_err);
86d890be15SChuck Lever 
87825213e5SJeff Layton #include "state.h"
88825213e5SJeff Layton 
8931ef83dcSChristoph Hellwig DECLARE_EVENT_CLASS(nfsd_stateid_class,
9031ef83dcSChristoph Hellwig 	TP_PROTO(stateid_t *stp),
9131ef83dcSChristoph Hellwig 	TP_ARGS(stp),
9231ef83dcSChristoph Hellwig 	TP_STRUCT__entry(
9331ef83dcSChristoph Hellwig 		__field(u32, cl_boot)
9431ef83dcSChristoph Hellwig 		__field(u32, cl_id)
9531ef83dcSChristoph Hellwig 		__field(u32, si_id)
9631ef83dcSChristoph Hellwig 		__field(u32, si_generation)
9731ef83dcSChristoph Hellwig 	),
9831ef83dcSChristoph Hellwig 	TP_fast_assign(
9931ef83dcSChristoph Hellwig 		__entry->cl_boot = stp->si_opaque.so_clid.cl_boot;
10031ef83dcSChristoph Hellwig 		__entry->cl_id = stp->si_opaque.so_clid.cl_id;
10131ef83dcSChristoph Hellwig 		__entry->si_id = stp->si_opaque.so_id;
10231ef83dcSChristoph Hellwig 		__entry->si_generation = stp->si_generation;
10331ef83dcSChristoph Hellwig 	),
10431ef83dcSChristoph Hellwig 	TP_printk("client %08x:%08x stateid %08x:%08x",
10531ef83dcSChristoph Hellwig 		__entry->cl_boot,
10631ef83dcSChristoph Hellwig 		__entry->cl_id,
10731ef83dcSChristoph Hellwig 		__entry->si_id,
10831ef83dcSChristoph Hellwig 		__entry->si_generation)
10931ef83dcSChristoph Hellwig )
11031ef83dcSChristoph Hellwig 
11131ef83dcSChristoph Hellwig #define DEFINE_STATEID_EVENT(name) \
112f394b62bSChuck Lever DEFINE_EVENT(nfsd_stateid_class, nfsd_##name, \
11331ef83dcSChristoph Hellwig 	TP_PROTO(stateid_t *stp), \
11431ef83dcSChristoph Hellwig 	TP_ARGS(stp))
11531ef83dcSChristoph Hellwig DEFINE_STATEID_EVENT(layoutstate_alloc);
11631ef83dcSChristoph Hellwig DEFINE_STATEID_EVENT(layoutstate_unhash);
11731ef83dcSChristoph Hellwig DEFINE_STATEID_EVENT(layoutstate_free);
11831ef83dcSChristoph Hellwig DEFINE_STATEID_EVENT(layout_get_lookup_fail);
11931ef83dcSChristoph Hellwig DEFINE_STATEID_EVENT(layout_commit_lookup_fail);
12031ef83dcSChristoph Hellwig DEFINE_STATEID_EVENT(layout_return_lookup_fail);
12131ef83dcSChristoph Hellwig DEFINE_STATEID_EVENT(layout_recall);
12231ef83dcSChristoph Hellwig DEFINE_STATEID_EVENT(layout_recall_done);
12331ef83dcSChristoph Hellwig DEFINE_STATEID_EVENT(layout_recall_fail);
12431ef83dcSChristoph Hellwig DEFINE_STATEID_EVENT(layout_recall_release);
12531ef83dcSChristoph Hellwig 
12631ef83dcSChristoph Hellwig #endif /* _NFSD_TRACE_H */
12731ef83dcSChristoph Hellwig 
12831ef83dcSChristoph Hellwig #undef TRACE_INCLUDE_PATH
12931ef83dcSChristoph Hellwig #define TRACE_INCLUDE_PATH .
13031ef83dcSChristoph Hellwig #define TRACE_INCLUDE_FILE trace
13131ef83dcSChristoph Hellwig #include <trace/define_trace.h>
132