xref: /openbmc/linux/fs/nfsd/trace.h (revision 6e8b50d1)
131ef83dcSChristoph Hellwig /*
231ef83dcSChristoph Hellwig  * Copyright (c) 2014 Christoph Hellwig.
331ef83dcSChristoph Hellwig  */
431ef83dcSChristoph Hellwig #undef TRACE_SYSTEM
531ef83dcSChristoph Hellwig #define TRACE_SYSTEM nfsd
631ef83dcSChristoph Hellwig 
731ef83dcSChristoph Hellwig #if !defined(_NFSD_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
831ef83dcSChristoph Hellwig #define _NFSD_TRACE_H
931ef83dcSChristoph Hellwig 
1031ef83dcSChristoph Hellwig #include <linux/tracepoint.h>
116e8b50d1SJeff Layton #include "nfsfh.h"
126e8b50d1SJeff Layton 
136e8b50d1SJeff Layton DECLARE_EVENT_CLASS(nfsd_io_class,
146e8b50d1SJeff Layton 	TP_PROTO(struct svc_rqst *rqstp,
156e8b50d1SJeff Layton 		 struct svc_fh	*fhp,
166e8b50d1SJeff Layton 		 loff_t		offset,
176e8b50d1SJeff Layton 		 int		len),
186e8b50d1SJeff Layton 	TP_ARGS(rqstp, fhp, offset, len),
196e8b50d1SJeff Layton 	TP_STRUCT__entry(
206e8b50d1SJeff Layton 		__field(__be32, xid)
216e8b50d1SJeff Layton 		__field_struct(struct knfsd_fh, fh)
226e8b50d1SJeff Layton 		__field(loff_t, offset)
236e8b50d1SJeff Layton 		__field(int, len)
246e8b50d1SJeff Layton 	),
256e8b50d1SJeff Layton 	TP_fast_assign(
266e8b50d1SJeff Layton 		__entry->xid = rqstp->rq_xid,
276e8b50d1SJeff Layton 		fh_copy_shallow(&__entry->fh, &fhp->fh_handle);
286e8b50d1SJeff Layton 		__entry->offset = offset;
296e8b50d1SJeff Layton 		__entry->len = len;
306e8b50d1SJeff Layton 	),
316e8b50d1SJeff Layton 	TP_printk("xid=0x%x fh=0x%x offset=%lld len=%d",
326e8b50d1SJeff Layton 		  __be32_to_cpu(__entry->xid), knfsd_fh_hash(&__entry->fh),
336e8b50d1SJeff Layton 		  __entry->offset, __entry->len)
346e8b50d1SJeff Layton )
356e8b50d1SJeff Layton 
366e8b50d1SJeff Layton #define DEFINE_NFSD_IO_EVENT(name)		\
376e8b50d1SJeff Layton DEFINE_EVENT(nfsd_io_class, name,		\
386e8b50d1SJeff Layton 	TP_PROTO(struct svc_rqst *rqstp,	\
396e8b50d1SJeff Layton 		 struct svc_fh	*fhp,		\
406e8b50d1SJeff Layton 		 loff_t		offset,		\
416e8b50d1SJeff Layton 		 int		len),		\
426e8b50d1SJeff Layton 	TP_ARGS(rqstp, fhp, offset, len))
436e8b50d1SJeff Layton 
446e8b50d1SJeff Layton DEFINE_NFSD_IO_EVENT(read_start);
456e8b50d1SJeff Layton DEFINE_NFSD_IO_EVENT(read_opened);
466e8b50d1SJeff Layton DEFINE_NFSD_IO_EVENT(read_io_done);
476e8b50d1SJeff Layton DEFINE_NFSD_IO_EVENT(read_done);
486e8b50d1SJeff Layton DEFINE_NFSD_IO_EVENT(write_start);
496e8b50d1SJeff Layton DEFINE_NFSD_IO_EVENT(write_opened);
506e8b50d1SJeff Layton DEFINE_NFSD_IO_EVENT(write_io_done);
516e8b50d1SJeff Layton DEFINE_NFSD_IO_EVENT(write_done);
5231ef83dcSChristoph Hellwig 
53825213e5SJeff Layton #include "state.h"
54825213e5SJeff Layton 
5531ef83dcSChristoph Hellwig DECLARE_EVENT_CLASS(nfsd_stateid_class,
5631ef83dcSChristoph Hellwig 	TP_PROTO(stateid_t *stp),
5731ef83dcSChristoph Hellwig 	TP_ARGS(stp),
5831ef83dcSChristoph Hellwig 	TP_STRUCT__entry(
5931ef83dcSChristoph Hellwig 		__field(u32, cl_boot)
6031ef83dcSChristoph Hellwig 		__field(u32, cl_id)
6131ef83dcSChristoph Hellwig 		__field(u32, si_id)
6231ef83dcSChristoph Hellwig 		__field(u32, si_generation)
6331ef83dcSChristoph Hellwig 	),
6431ef83dcSChristoph Hellwig 	TP_fast_assign(
6531ef83dcSChristoph Hellwig 		__entry->cl_boot = stp->si_opaque.so_clid.cl_boot;
6631ef83dcSChristoph Hellwig 		__entry->cl_id = stp->si_opaque.so_clid.cl_id;
6731ef83dcSChristoph Hellwig 		__entry->si_id = stp->si_opaque.so_id;
6831ef83dcSChristoph Hellwig 		__entry->si_generation = stp->si_generation;
6931ef83dcSChristoph Hellwig 	),
7031ef83dcSChristoph Hellwig 	TP_printk("client %08x:%08x stateid %08x:%08x",
7131ef83dcSChristoph Hellwig 		__entry->cl_boot,
7231ef83dcSChristoph Hellwig 		__entry->cl_id,
7331ef83dcSChristoph Hellwig 		__entry->si_id,
7431ef83dcSChristoph Hellwig 		__entry->si_generation)
7531ef83dcSChristoph Hellwig )
7631ef83dcSChristoph Hellwig 
7731ef83dcSChristoph Hellwig #define DEFINE_STATEID_EVENT(name) \
7831ef83dcSChristoph Hellwig DEFINE_EVENT(nfsd_stateid_class, name, \
7931ef83dcSChristoph Hellwig 	TP_PROTO(stateid_t *stp), \
8031ef83dcSChristoph Hellwig 	TP_ARGS(stp))
8131ef83dcSChristoph Hellwig DEFINE_STATEID_EVENT(layoutstate_alloc);
8231ef83dcSChristoph Hellwig DEFINE_STATEID_EVENT(layoutstate_unhash);
8331ef83dcSChristoph Hellwig DEFINE_STATEID_EVENT(layoutstate_free);
8431ef83dcSChristoph Hellwig DEFINE_STATEID_EVENT(layout_get_lookup_fail);
8531ef83dcSChristoph Hellwig DEFINE_STATEID_EVENT(layout_commit_lookup_fail);
8631ef83dcSChristoph Hellwig DEFINE_STATEID_EVENT(layout_return_lookup_fail);
8731ef83dcSChristoph Hellwig DEFINE_STATEID_EVENT(layout_recall);
8831ef83dcSChristoph Hellwig DEFINE_STATEID_EVENT(layout_recall_done);
8931ef83dcSChristoph Hellwig DEFINE_STATEID_EVENT(layout_recall_fail);
9031ef83dcSChristoph Hellwig DEFINE_STATEID_EVENT(layout_recall_release);
9131ef83dcSChristoph Hellwig 
9231ef83dcSChristoph Hellwig #endif /* _NFSD_TRACE_H */
9331ef83dcSChristoph Hellwig 
9431ef83dcSChristoph Hellwig #undef TRACE_INCLUDE_PATH
9531ef83dcSChristoph Hellwig #define TRACE_INCLUDE_PATH .
9631ef83dcSChristoph Hellwig #define TRACE_INCLUDE_FILE trace
9731ef83dcSChristoph Hellwig #include <trace/define_trace.h>
98