xref: /openbmc/linux/fs/nfsd/trace.h (revision b2441318)
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(
216e8b50d1SJeff Layton 		__field(__be32, xid)
226e8b50d1SJeff Layton 		__field_struct(struct knfsd_fh, fh)
236e8b50d1SJeff Layton 		__field(loff_t, offset)
246e8b50d1SJeff Layton 		__field(int, len)
256e8b50d1SJeff Layton 	),
266e8b50d1SJeff Layton 	TP_fast_assign(
276e8b50d1SJeff Layton 		__entry->xid = rqstp->rq_xid,
286e8b50d1SJeff Layton 		fh_copy_shallow(&__entry->fh, &fhp->fh_handle);
296e8b50d1SJeff Layton 		__entry->offset = offset;
306e8b50d1SJeff Layton 		__entry->len = len;
316e8b50d1SJeff Layton 	),
326e8b50d1SJeff Layton 	TP_printk("xid=0x%x fh=0x%x offset=%lld len=%d",
336e8b50d1SJeff Layton 		  __be32_to_cpu(__entry->xid), knfsd_fh_hash(&__entry->fh),
346e8b50d1SJeff Layton 		  __entry->offset, __entry->len)
356e8b50d1SJeff Layton )
366e8b50d1SJeff Layton 
376e8b50d1SJeff Layton #define DEFINE_NFSD_IO_EVENT(name)		\
386e8b50d1SJeff Layton DEFINE_EVENT(nfsd_io_class, name,		\
396e8b50d1SJeff Layton 	TP_PROTO(struct svc_rqst *rqstp,	\
406e8b50d1SJeff Layton 		 struct svc_fh	*fhp,		\
416e8b50d1SJeff Layton 		 loff_t		offset,		\
426e8b50d1SJeff Layton 		 int		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 
54825213e5SJeff Layton #include "state.h"
55825213e5SJeff Layton 
5631ef83dcSChristoph Hellwig DECLARE_EVENT_CLASS(nfsd_stateid_class,
5731ef83dcSChristoph Hellwig 	TP_PROTO(stateid_t *stp),
5831ef83dcSChristoph Hellwig 	TP_ARGS(stp),
5931ef83dcSChristoph Hellwig 	TP_STRUCT__entry(
6031ef83dcSChristoph Hellwig 		__field(u32, cl_boot)
6131ef83dcSChristoph Hellwig 		__field(u32, cl_id)
6231ef83dcSChristoph Hellwig 		__field(u32, si_id)
6331ef83dcSChristoph Hellwig 		__field(u32, si_generation)
6431ef83dcSChristoph Hellwig 	),
6531ef83dcSChristoph Hellwig 	TP_fast_assign(
6631ef83dcSChristoph Hellwig 		__entry->cl_boot = stp->si_opaque.so_clid.cl_boot;
6731ef83dcSChristoph Hellwig 		__entry->cl_id = stp->si_opaque.so_clid.cl_id;
6831ef83dcSChristoph Hellwig 		__entry->si_id = stp->si_opaque.so_id;
6931ef83dcSChristoph Hellwig 		__entry->si_generation = stp->si_generation;
7031ef83dcSChristoph Hellwig 	),
7131ef83dcSChristoph Hellwig 	TP_printk("client %08x:%08x stateid %08x:%08x",
7231ef83dcSChristoph Hellwig 		__entry->cl_boot,
7331ef83dcSChristoph Hellwig 		__entry->cl_id,
7431ef83dcSChristoph Hellwig 		__entry->si_id,
7531ef83dcSChristoph Hellwig 		__entry->si_generation)
7631ef83dcSChristoph Hellwig )
7731ef83dcSChristoph Hellwig 
7831ef83dcSChristoph Hellwig #define DEFINE_STATEID_EVENT(name) \
7931ef83dcSChristoph Hellwig DEFINE_EVENT(nfsd_stateid_class, name, \
8031ef83dcSChristoph Hellwig 	TP_PROTO(stateid_t *stp), \
8131ef83dcSChristoph Hellwig 	TP_ARGS(stp))
8231ef83dcSChristoph Hellwig DEFINE_STATEID_EVENT(layoutstate_alloc);
8331ef83dcSChristoph Hellwig DEFINE_STATEID_EVENT(layoutstate_unhash);
8431ef83dcSChristoph Hellwig DEFINE_STATEID_EVENT(layoutstate_free);
8531ef83dcSChristoph Hellwig DEFINE_STATEID_EVENT(layout_get_lookup_fail);
8631ef83dcSChristoph Hellwig DEFINE_STATEID_EVENT(layout_commit_lookup_fail);
8731ef83dcSChristoph Hellwig DEFINE_STATEID_EVENT(layout_return_lookup_fail);
8831ef83dcSChristoph Hellwig DEFINE_STATEID_EVENT(layout_recall);
8931ef83dcSChristoph Hellwig DEFINE_STATEID_EVENT(layout_recall_done);
9031ef83dcSChristoph Hellwig DEFINE_STATEID_EVENT(layout_recall_fail);
9131ef83dcSChristoph Hellwig DEFINE_STATEID_EVENT(layout_recall_release);
9231ef83dcSChristoph Hellwig 
9331ef83dcSChristoph Hellwig #endif /* _NFSD_TRACE_H */
9431ef83dcSChristoph Hellwig 
9531ef83dcSChristoph Hellwig #undef TRACE_INCLUDE_PATH
9631ef83dcSChristoph Hellwig #define TRACE_INCLUDE_PATH .
9731ef83dcSChristoph Hellwig #define TRACE_INCLUDE_FILE trace
9831ef83dcSChristoph Hellwig #include <trace/define_trace.h>
99