Linux Audio

Check our new training course

Loading...
Note: File does not exist in v3.15.
  1/* SPDX-License-Identifier: GPL-2.0 */
  2/*
  3 * Copyright (c) 2014 Christoph Hellwig.
  4 */
  5#undef TRACE_SYSTEM
  6#define TRACE_SYSTEM nfsd
  7
  8#if !defined(_NFSD_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
  9#define _NFSD_TRACE_H
 10
 11#include <linux/tracepoint.h>
 12#include "nfsfh.h"
 13
 14TRACE_EVENT(nfsd_compound,
 15	TP_PROTO(const struct svc_rqst *rqst,
 16		 u32 args_opcnt),
 17	TP_ARGS(rqst, args_opcnt),
 18	TP_STRUCT__entry(
 19		__field(u32, xid)
 20		__field(u32, args_opcnt)
 21	),
 22	TP_fast_assign(
 23		__entry->xid = be32_to_cpu(rqst->rq_xid);
 24		__entry->args_opcnt = args_opcnt;
 25	),
 26	TP_printk("xid=0x%08x opcnt=%u",
 27		__entry->xid, __entry->args_opcnt)
 28)
 29
 30TRACE_EVENT(nfsd_compound_status,
 31	TP_PROTO(u32 args_opcnt,
 32		 u32 resp_opcnt,
 33		 __be32 status,
 34		 const char *name),
 35	TP_ARGS(args_opcnt, resp_opcnt, status, name),
 36	TP_STRUCT__entry(
 37		__field(u32, args_opcnt)
 38		__field(u32, resp_opcnt)
 39		__field(int, status)
 40		__string(name, name)
 41	),
 42	TP_fast_assign(
 43		__entry->args_opcnt = args_opcnt;
 44		__entry->resp_opcnt = resp_opcnt;
 45		__entry->status = be32_to_cpu(status);
 46		__assign_str(name, name);
 47	),
 48	TP_printk("op=%u/%u %s status=%d",
 49		__entry->resp_opcnt, __entry->args_opcnt,
 50		__get_str(name), __entry->status)
 51)
 52
 53DECLARE_EVENT_CLASS(nfsd_io_class,
 54	TP_PROTO(struct svc_rqst *rqstp,
 55		 struct svc_fh	*fhp,
 56		 loff_t		offset,
 57		 unsigned long	len),
 58	TP_ARGS(rqstp, fhp, offset, len),
 59	TP_STRUCT__entry(
 60		__field(u32, xid)
 61		__field(u32, fh_hash)
 62		__field(loff_t, offset)
 63		__field(unsigned long, len)
 64	),
 65	TP_fast_assign(
 66		__entry->xid = be32_to_cpu(rqstp->rq_xid);
 67		__entry->fh_hash = knfsd_fh_hash(&fhp->fh_handle);
 68		__entry->offset = offset;
 69		__entry->len = len;
 70	),
 71	TP_printk("xid=0x%08x fh_hash=0x%08x offset=%lld len=%lu",
 72		  __entry->xid, __entry->fh_hash,
 73		  __entry->offset, __entry->len)
 74)
 75
 76#define DEFINE_NFSD_IO_EVENT(name)		\
 77DEFINE_EVENT(nfsd_io_class, nfsd_##name,	\
 78	TP_PROTO(struct svc_rqst *rqstp,	\
 79		 struct svc_fh	*fhp,		\
 80		 loff_t		offset,		\
 81		 unsigned long	len),		\
 82	TP_ARGS(rqstp, fhp, offset, len))
 83
 84DEFINE_NFSD_IO_EVENT(read_start);
 85DEFINE_NFSD_IO_EVENT(read_splice);
 86DEFINE_NFSD_IO_EVENT(read_vector);
 87DEFINE_NFSD_IO_EVENT(read_io_done);
 88DEFINE_NFSD_IO_EVENT(read_done);
 89DEFINE_NFSD_IO_EVENT(write_start);
 90DEFINE_NFSD_IO_EVENT(write_opened);
 91DEFINE_NFSD_IO_EVENT(write_io_done);
 92DEFINE_NFSD_IO_EVENT(write_done);
 93
 94DECLARE_EVENT_CLASS(nfsd_err_class,
 95	TP_PROTO(struct svc_rqst *rqstp,
 96		 struct svc_fh	*fhp,
 97		 loff_t		offset,
 98		 int		status),
 99	TP_ARGS(rqstp, fhp, offset, status),
100	TP_STRUCT__entry(
101		__field(u32, xid)
102		__field(u32, fh_hash)
103		__field(loff_t, offset)
104		__field(int, status)
105	),
106	TP_fast_assign(
107		__entry->xid = be32_to_cpu(rqstp->rq_xid);
108		__entry->fh_hash = knfsd_fh_hash(&fhp->fh_handle);
109		__entry->offset = offset;
110		__entry->status = status;
111	),
112	TP_printk("xid=0x%08x fh_hash=0x%08x offset=%lld status=%d",
113		  __entry->xid, __entry->fh_hash,
114		  __entry->offset, __entry->status)
115)
116
117#define DEFINE_NFSD_ERR_EVENT(name)		\
118DEFINE_EVENT(nfsd_err_class, nfsd_##name,	\
119	TP_PROTO(struct svc_rqst *rqstp,	\
120		 struct svc_fh	*fhp,		\
121		 loff_t		offset,		\
122		 int		len),		\
123	TP_ARGS(rqstp, fhp, offset, len))
124
125DEFINE_NFSD_ERR_EVENT(read_err);
126DEFINE_NFSD_ERR_EVENT(write_err);
127
128#include "state.h"
129
130DECLARE_EVENT_CLASS(nfsd_stateid_class,
131	TP_PROTO(stateid_t *stp),
132	TP_ARGS(stp),
133	TP_STRUCT__entry(
134		__field(u32, cl_boot)
135		__field(u32, cl_id)
136		__field(u32, si_id)
137		__field(u32, si_generation)
138	),
139	TP_fast_assign(
140		__entry->cl_boot = stp->si_opaque.so_clid.cl_boot;
141		__entry->cl_id = stp->si_opaque.so_clid.cl_id;
142		__entry->si_id = stp->si_opaque.so_id;
143		__entry->si_generation = stp->si_generation;
144	),
145	TP_printk("client %08x:%08x stateid %08x:%08x",
146		__entry->cl_boot,
147		__entry->cl_id,
148		__entry->si_id,
149		__entry->si_generation)
150)
151
152#define DEFINE_STATEID_EVENT(name) \
153DEFINE_EVENT(nfsd_stateid_class, nfsd_##name, \
154	TP_PROTO(stateid_t *stp), \
155	TP_ARGS(stp))
156DEFINE_STATEID_EVENT(layoutstate_alloc);
157DEFINE_STATEID_EVENT(layoutstate_unhash);
158DEFINE_STATEID_EVENT(layoutstate_free);
159DEFINE_STATEID_EVENT(layout_get_lookup_fail);
160DEFINE_STATEID_EVENT(layout_commit_lookup_fail);
161DEFINE_STATEID_EVENT(layout_return_lookup_fail);
162DEFINE_STATEID_EVENT(layout_recall);
163DEFINE_STATEID_EVENT(layout_recall_done);
164DEFINE_STATEID_EVENT(layout_recall_fail);
165DEFINE_STATEID_EVENT(layout_recall_release);
166
167#endif /* _NFSD_TRACE_H */
168
169#undef TRACE_INCLUDE_PATH
170#define TRACE_INCLUDE_PATH .
171#define TRACE_INCLUDE_FILE trace
172#include <trace/define_trace.h>