linux/fs/nfsd/trace.h
<<
>>
Prefs
   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>
 173