162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Copyright (c) 2014 Christoph Hellwig. 462306a36Sopenharmony_ci */ 562306a36Sopenharmony_ci#undef TRACE_SYSTEM 662306a36Sopenharmony_ci#define TRACE_SYSTEM nfsd 762306a36Sopenharmony_ci 862306a36Sopenharmony_ci#if !defined(_NFSD_TRACE_H) || defined(TRACE_HEADER_MULTI_READ) 962306a36Sopenharmony_ci#define _NFSD_TRACE_H 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_ci#include <linux/tracepoint.h> 1262306a36Sopenharmony_ci#include <linux/sunrpc/xprt.h> 1362306a36Sopenharmony_ci#include <trace/misc/nfs.h> 1462306a36Sopenharmony_ci 1562306a36Sopenharmony_ci#include "export.h" 1662306a36Sopenharmony_ci#include "nfsfh.h" 1762306a36Sopenharmony_ci#include "xdr4.h" 1862306a36Sopenharmony_ci 1962306a36Sopenharmony_ci#define NFSD_TRACE_PROC_RES_FIELDS \ 2062306a36Sopenharmony_ci __field(unsigned int, netns_ino) \ 2162306a36Sopenharmony_ci __field(u32, xid) \ 2262306a36Sopenharmony_ci __field(unsigned long, status) \ 2362306a36Sopenharmony_ci __array(unsigned char, server, sizeof(struct sockaddr_in6)) \ 2462306a36Sopenharmony_ci __array(unsigned char, client, sizeof(struct sockaddr_in6)) 2562306a36Sopenharmony_ci 2662306a36Sopenharmony_ci#define NFSD_TRACE_PROC_RES_ASSIGNMENTS(error) \ 2762306a36Sopenharmony_ci do { \ 2862306a36Sopenharmony_ci __entry->netns_ino = SVC_NET(rqstp)->ns.inum; \ 2962306a36Sopenharmony_ci __entry->xid = be32_to_cpu(rqstp->rq_xid); \ 3062306a36Sopenharmony_ci __entry->status = be32_to_cpu(error); \ 3162306a36Sopenharmony_ci memcpy(__entry->server, &rqstp->rq_xprt->xpt_local, \ 3262306a36Sopenharmony_ci rqstp->rq_xprt->xpt_locallen); \ 3362306a36Sopenharmony_ci memcpy(__entry->client, &rqstp->rq_xprt->xpt_remote, \ 3462306a36Sopenharmony_ci rqstp->rq_xprt->xpt_remotelen); \ 3562306a36Sopenharmony_ci } while (0); 3662306a36Sopenharmony_ci 3762306a36Sopenharmony_ciDECLARE_EVENT_CLASS(nfsd_xdr_err_class, 3862306a36Sopenharmony_ci TP_PROTO( 3962306a36Sopenharmony_ci const struct svc_rqst *rqstp 4062306a36Sopenharmony_ci ), 4162306a36Sopenharmony_ci TP_ARGS(rqstp), 4262306a36Sopenharmony_ci TP_STRUCT__entry( 4362306a36Sopenharmony_ci __field(unsigned int, netns_ino) 4462306a36Sopenharmony_ci __field(u32, xid) 4562306a36Sopenharmony_ci __field(u32, vers) 4662306a36Sopenharmony_ci __field(u32, proc) 4762306a36Sopenharmony_ci __sockaddr(server, rqstp->rq_xprt->xpt_locallen) 4862306a36Sopenharmony_ci __sockaddr(client, rqstp->rq_xprt->xpt_remotelen) 4962306a36Sopenharmony_ci ), 5062306a36Sopenharmony_ci TP_fast_assign( 5162306a36Sopenharmony_ci const struct svc_xprt *xprt = rqstp->rq_xprt; 5262306a36Sopenharmony_ci 5362306a36Sopenharmony_ci __entry->netns_ino = xprt->xpt_net->ns.inum; 5462306a36Sopenharmony_ci __entry->xid = be32_to_cpu(rqstp->rq_xid); 5562306a36Sopenharmony_ci __entry->vers = rqstp->rq_vers; 5662306a36Sopenharmony_ci __entry->proc = rqstp->rq_proc; 5762306a36Sopenharmony_ci __assign_sockaddr(server, &xprt->xpt_local, xprt->xpt_locallen); 5862306a36Sopenharmony_ci __assign_sockaddr(client, &xprt->xpt_remote, xprt->xpt_remotelen); 5962306a36Sopenharmony_ci ), 6062306a36Sopenharmony_ci TP_printk("xid=0x%08x vers=%u proc=%u", 6162306a36Sopenharmony_ci __entry->xid, __entry->vers, __entry->proc 6262306a36Sopenharmony_ci ) 6362306a36Sopenharmony_ci); 6462306a36Sopenharmony_ci 6562306a36Sopenharmony_ci#define DEFINE_NFSD_XDR_ERR_EVENT(name) \ 6662306a36Sopenharmony_ciDEFINE_EVENT(nfsd_xdr_err_class, nfsd_##name##_err, \ 6762306a36Sopenharmony_ci TP_PROTO(const struct svc_rqst *rqstp), \ 6862306a36Sopenharmony_ci TP_ARGS(rqstp)) 6962306a36Sopenharmony_ci 7062306a36Sopenharmony_ciDEFINE_NFSD_XDR_ERR_EVENT(garbage_args); 7162306a36Sopenharmony_ciDEFINE_NFSD_XDR_ERR_EVENT(cant_encode); 7262306a36Sopenharmony_ci 7362306a36Sopenharmony_ci#define show_nfsd_may_flags(x) \ 7462306a36Sopenharmony_ci __print_flags(x, "|", \ 7562306a36Sopenharmony_ci { NFSD_MAY_EXEC, "EXEC" }, \ 7662306a36Sopenharmony_ci { NFSD_MAY_WRITE, "WRITE" }, \ 7762306a36Sopenharmony_ci { NFSD_MAY_READ, "READ" }, \ 7862306a36Sopenharmony_ci { NFSD_MAY_SATTR, "SATTR" }, \ 7962306a36Sopenharmony_ci { NFSD_MAY_TRUNC, "TRUNC" }, \ 8062306a36Sopenharmony_ci { NFSD_MAY_LOCK, "LOCK" }, \ 8162306a36Sopenharmony_ci { NFSD_MAY_OWNER_OVERRIDE, "OWNER_OVERRIDE" }, \ 8262306a36Sopenharmony_ci { NFSD_MAY_LOCAL_ACCESS, "LOCAL_ACCESS" }, \ 8362306a36Sopenharmony_ci { NFSD_MAY_BYPASS_GSS_ON_ROOT, "BYPASS_GSS_ON_ROOT" }, \ 8462306a36Sopenharmony_ci { NFSD_MAY_NOT_BREAK_LEASE, "NOT_BREAK_LEASE" }, \ 8562306a36Sopenharmony_ci { NFSD_MAY_BYPASS_GSS, "BYPASS_GSS" }, \ 8662306a36Sopenharmony_ci { NFSD_MAY_READ_IF_EXEC, "READ_IF_EXEC" }, \ 8762306a36Sopenharmony_ci { NFSD_MAY_64BIT_COOKIE, "64BIT_COOKIE" }) 8862306a36Sopenharmony_ci 8962306a36Sopenharmony_ciTRACE_EVENT(nfsd_compound, 9062306a36Sopenharmony_ci TP_PROTO( 9162306a36Sopenharmony_ci const struct svc_rqst *rqst, 9262306a36Sopenharmony_ci const char *tag, 9362306a36Sopenharmony_ci u32 taglen, 9462306a36Sopenharmony_ci u32 opcnt 9562306a36Sopenharmony_ci ), 9662306a36Sopenharmony_ci TP_ARGS(rqst, tag, taglen, opcnt), 9762306a36Sopenharmony_ci TP_STRUCT__entry( 9862306a36Sopenharmony_ci __field(u32, xid) 9962306a36Sopenharmony_ci __field(u32, opcnt) 10062306a36Sopenharmony_ci __string_len(tag, tag, taglen) 10162306a36Sopenharmony_ci ), 10262306a36Sopenharmony_ci TP_fast_assign( 10362306a36Sopenharmony_ci __entry->xid = be32_to_cpu(rqst->rq_xid); 10462306a36Sopenharmony_ci __entry->opcnt = opcnt; 10562306a36Sopenharmony_ci __assign_str_len(tag, tag, taglen); 10662306a36Sopenharmony_ci ), 10762306a36Sopenharmony_ci TP_printk("xid=0x%08x opcnt=%u tag=%s", 10862306a36Sopenharmony_ci __entry->xid, __entry->opcnt, __get_str(tag) 10962306a36Sopenharmony_ci ) 11062306a36Sopenharmony_ci) 11162306a36Sopenharmony_ci 11262306a36Sopenharmony_ciTRACE_EVENT(nfsd_compound_status, 11362306a36Sopenharmony_ci TP_PROTO(u32 args_opcnt, 11462306a36Sopenharmony_ci u32 resp_opcnt, 11562306a36Sopenharmony_ci __be32 status, 11662306a36Sopenharmony_ci const char *name), 11762306a36Sopenharmony_ci TP_ARGS(args_opcnt, resp_opcnt, status, name), 11862306a36Sopenharmony_ci TP_STRUCT__entry( 11962306a36Sopenharmony_ci __field(u32, args_opcnt) 12062306a36Sopenharmony_ci __field(u32, resp_opcnt) 12162306a36Sopenharmony_ci __field(int, status) 12262306a36Sopenharmony_ci __string(name, name) 12362306a36Sopenharmony_ci ), 12462306a36Sopenharmony_ci TP_fast_assign( 12562306a36Sopenharmony_ci __entry->args_opcnt = args_opcnt; 12662306a36Sopenharmony_ci __entry->resp_opcnt = resp_opcnt; 12762306a36Sopenharmony_ci __entry->status = be32_to_cpu(status); 12862306a36Sopenharmony_ci __assign_str(name, name); 12962306a36Sopenharmony_ci ), 13062306a36Sopenharmony_ci TP_printk("op=%u/%u %s status=%d", 13162306a36Sopenharmony_ci __entry->resp_opcnt, __entry->args_opcnt, 13262306a36Sopenharmony_ci __get_str(name), __entry->status) 13362306a36Sopenharmony_ci) 13462306a36Sopenharmony_ci 13562306a36Sopenharmony_ciTRACE_EVENT(nfsd_compound_decode_err, 13662306a36Sopenharmony_ci TP_PROTO( 13762306a36Sopenharmony_ci const struct svc_rqst *rqstp, 13862306a36Sopenharmony_ci u32 args_opcnt, 13962306a36Sopenharmony_ci u32 resp_opcnt, 14062306a36Sopenharmony_ci u32 opnum, 14162306a36Sopenharmony_ci __be32 status 14262306a36Sopenharmony_ci ), 14362306a36Sopenharmony_ci TP_ARGS(rqstp, args_opcnt, resp_opcnt, opnum, status), 14462306a36Sopenharmony_ci TP_STRUCT__entry( 14562306a36Sopenharmony_ci NFSD_TRACE_PROC_RES_FIELDS 14662306a36Sopenharmony_ci 14762306a36Sopenharmony_ci __field(u32, args_opcnt) 14862306a36Sopenharmony_ci __field(u32, resp_opcnt) 14962306a36Sopenharmony_ci __field(u32, opnum) 15062306a36Sopenharmony_ci ), 15162306a36Sopenharmony_ci TP_fast_assign( 15262306a36Sopenharmony_ci NFSD_TRACE_PROC_RES_ASSIGNMENTS(status) 15362306a36Sopenharmony_ci 15462306a36Sopenharmony_ci __entry->args_opcnt = args_opcnt; 15562306a36Sopenharmony_ci __entry->resp_opcnt = resp_opcnt; 15662306a36Sopenharmony_ci __entry->opnum = opnum; 15762306a36Sopenharmony_ci ), 15862306a36Sopenharmony_ci TP_printk("op=%u/%u opnum=%u status=%lu", 15962306a36Sopenharmony_ci __entry->resp_opcnt, __entry->args_opcnt, 16062306a36Sopenharmony_ci __entry->opnum, __entry->status) 16162306a36Sopenharmony_ci); 16262306a36Sopenharmony_ci 16362306a36Sopenharmony_ciTRACE_EVENT(nfsd_compound_encode_err, 16462306a36Sopenharmony_ci TP_PROTO( 16562306a36Sopenharmony_ci const struct svc_rqst *rqstp, 16662306a36Sopenharmony_ci u32 opnum, 16762306a36Sopenharmony_ci __be32 status 16862306a36Sopenharmony_ci ), 16962306a36Sopenharmony_ci TP_ARGS(rqstp, opnum, status), 17062306a36Sopenharmony_ci TP_STRUCT__entry( 17162306a36Sopenharmony_ci NFSD_TRACE_PROC_RES_FIELDS 17262306a36Sopenharmony_ci 17362306a36Sopenharmony_ci __field(u32, opnum) 17462306a36Sopenharmony_ci ), 17562306a36Sopenharmony_ci TP_fast_assign( 17662306a36Sopenharmony_ci NFSD_TRACE_PROC_RES_ASSIGNMENTS(status) 17762306a36Sopenharmony_ci 17862306a36Sopenharmony_ci __entry->opnum = opnum; 17962306a36Sopenharmony_ci ), 18062306a36Sopenharmony_ci TP_printk("opnum=%u status=%lu", 18162306a36Sopenharmony_ci __entry->opnum, __entry->status) 18262306a36Sopenharmony_ci); 18362306a36Sopenharmony_ci 18462306a36Sopenharmony_ci#define show_fs_file_type(x) \ 18562306a36Sopenharmony_ci __print_symbolic(x, \ 18662306a36Sopenharmony_ci { S_IFLNK, "LNK" }, \ 18762306a36Sopenharmony_ci { S_IFREG, "REG" }, \ 18862306a36Sopenharmony_ci { S_IFDIR, "DIR" }, \ 18962306a36Sopenharmony_ci { S_IFCHR, "CHR" }, \ 19062306a36Sopenharmony_ci { S_IFBLK, "BLK" }, \ 19162306a36Sopenharmony_ci { S_IFIFO, "FIFO" }, \ 19262306a36Sopenharmony_ci { S_IFSOCK, "SOCK" }) 19362306a36Sopenharmony_ci 19462306a36Sopenharmony_ciTRACE_EVENT(nfsd_fh_verify, 19562306a36Sopenharmony_ci TP_PROTO( 19662306a36Sopenharmony_ci const struct svc_rqst *rqstp, 19762306a36Sopenharmony_ci const struct svc_fh *fhp, 19862306a36Sopenharmony_ci umode_t type, 19962306a36Sopenharmony_ci int access 20062306a36Sopenharmony_ci ), 20162306a36Sopenharmony_ci TP_ARGS(rqstp, fhp, type, access), 20262306a36Sopenharmony_ci TP_STRUCT__entry( 20362306a36Sopenharmony_ci __field(unsigned int, netns_ino) 20462306a36Sopenharmony_ci __sockaddr(server, rqstp->rq_xprt->xpt_remotelen) 20562306a36Sopenharmony_ci __sockaddr(client, rqstp->rq_xprt->xpt_remotelen) 20662306a36Sopenharmony_ci __field(u32, xid) 20762306a36Sopenharmony_ci __field(u32, fh_hash) 20862306a36Sopenharmony_ci __field(const void *, inode) 20962306a36Sopenharmony_ci __field(unsigned long, type) 21062306a36Sopenharmony_ci __field(unsigned long, access) 21162306a36Sopenharmony_ci ), 21262306a36Sopenharmony_ci TP_fast_assign( 21362306a36Sopenharmony_ci __entry->netns_ino = SVC_NET(rqstp)->ns.inum; 21462306a36Sopenharmony_ci __assign_sockaddr(server, &rqstp->rq_xprt->xpt_local, 21562306a36Sopenharmony_ci rqstp->rq_xprt->xpt_locallen); 21662306a36Sopenharmony_ci __assign_sockaddr(client, &rqstp->rq_xprt->xpt_remote, 21762306a36Sopenharmony_ci rqstp->rq_xprt->xpt_remotelen); 21862306a36Sopenharmony_ci __entry->xid = be32_to_cpu(rqstp->rq_xid); 21962306a36Sopenharmony_ci __entry->fh_hash = knfsd_fh_hash(&fhp->fh_handle); 22062306a36Sopenharmony_ci __entry->inode = d_inode(fhp->fh_dentry); 22162306a36Sopenharmony_ci __entry->type = type; 22262306a36Sopenharmony_ci __entry->access = access; 22362306a36Sopenharmony_ci ), 22462306a36Sopenharmony_ci TP_printk("xid=0x%08x fh_hash=0x%08x type=%s access=%s", 22562306a36Sopenharmony_ci __entry->xid, __entry->fh_hash, 22662306a36Sopenharmony_ci show_fs_file_type(__entry->type), 22762306a36Sopenharmony_ci show_nfsd_may_flags(__entry->access) 22862306a36Sopenharmony_ci ) 22962306a36Sopenharmony_ci); 23062306a36Sopenharmony_ci 23162306a36Sopenharmony_ciTRACE_EVENT_CONDITION(nfsd_fh_verify_err, 23262306a36Sopenharmony_ci TP_PROTO( 23362306a36Sopenharmony_ci const struct svc_rqst *rqstp, 23462306a36Sopenharmony_ci const struct svc_fh *fhp, 23562306a36Sopenharmony_ci umode_t type, 23662306a36Sopenharmony_ci int access, 23762306a36Sopenharmony_ci __be32 error 23862306a36Sopenharmony_ci ), 23962306a36Sopenharmony_ci TP_ARGS(rqstp, fhp, type, access, error), 24062306a36Sopenharmony_ci TP_CONDITION(error), 24162306a36Sopenharmony_ci TP_STRUCT__entry( 24262306a36Sopenharmony_ci __field(unsigned int, netns_ino) 24362306a36Sopenharmony_ci __sockaddr(server, rqstp->rq_xprt->xpt_remotelen) 24462306a36Sopenharmony_ci __sockaddr(client, rqstp->rq_xprt->xpt_remotelen) 24562306a36Sopenharmony_ci __field(u32, xid) 24662306a36Sopenharmony_ci __field(u32, fh_hash) 24762306a36Sopenharmony_ci __field(const void *, inode) 24862306a36Sopenharmony_ci __field(unsigned long, type) 24962306a36Sopenharmony_ci __field(unsigned long, access) 25062306a36Sopenharmony_ci __field(int, error) 25162306a36Sopenharmony_ci ), 25262306a36Sopenharmony_ci TP_fast_assign( 25362306a36Sopenharmony_ci __entry->netns_ino = SVC_NET(rqstp)->ns.inum; 25462306a36Sopenharmony_ci __assign_sockaddr(server, &rqstp->rq_xprt->xpt_local, 25562306a36Sopenharmony_ci rqstp->rq_xprt->xpt_locallen); 25662306a36Sopenharmony_ci __assign_sockaddr(client, &rqstp->rq_xprt->xpt_remote, 25762306a36Sopenharmony_ci rqstp->rq_xprt->xpt_remotelen); 25862306a36Sopenharmony_ci __entry->xid = be32_to_cpu(rqstp->rq_xid); 25962306a36Sopenharmony_ci __entry->fh_hash = knfsd_fh_hash(&fhp->fh_handle); 26062306a36Sopenharmony_ci if (fhp->fh_dentry) 26162306a36Sopenharmony_ci __entry->inode = d_inode(fhp->fh_dentry); 26262306a36Sopenharmony_ci else 26362306a36Sopenharmony_ci __entry->inode = NULL; 26462306a36Sopenharmony_ci __entry->type = type; 26562306a36Sopenharmony_ci __entry->access = access; 26662306a36Sopenharmony_ci __entry->error = be32_to_cpu(error); 26762306a36Sopenharmony_ci ), 26862306a36Sopenharmony_ci TP_printk("xid=0x%08x fh_hash=0x%08x type=%s access=%s error=%d", 26962306a36Sopenharmony_ci __entry->xid, __entry->fh_hash, 27062306a36Sopenharmony_ci show_fs_file_type(__entry->type), 27162306a36Sopenharmony_ci show_nfsd_may_flags(__entry->access), 27262306a36Sopenharmony_ci __entry->error 27362306a36Sopenharmony_ci ) 27462306a36Sopenharmony_ci); 27562306a36Sopenharmony_ci 27662306a36Sopenharmony_ciDECLARE_EVENT_CLASS(nfsd_fh_err_class, 27762306a36Sopenharmony_ci TP_PROTO(struct svc_rqst *rqstp, 27862306a36Sopenharmony_ci struct svc_fh *fhp, 27962306a36Sopenharmony_ci int status), 28062306a36Sopenharmony_ci TP_ARGS(rqstp, fhp, status), 28162306a36Sopenharmony_ci TP_STRUCT__entry( 28262306a36Sopenharmony_ci __field(u32, xid) 28362306a36Sopenharmony_ci __field(u32, fh_hash) 28462306a36Sopenharmony_ci __field(int, status) 28562306a36Sopenharmony_ci ), 28662306a36Sopenharmony_ci TP_fast_assign( 28762306a36Sopenharmony_ci __entry->xid = be32_to_cpu(rqstp->rq_xid); 28862306a36Sopenharmony_ci __entry->fh_hash = knfsd_fh_hash(&fhp->fh_handle); 28962306a36Sopenharmony_ci __entry->status = status; 29062306a36Sopenharmony_ci ), 29162306a36Sopenharmony_ci TP_printk("xid=0x%08x fh_hash=0x%08x status=%d", 29262306a36Sopenharmony_ci __entry->xid, __entry->fh_hash, 29362306a36Sopenharmony_ci __entry->status) 29462306a36Sopenharmony_ci) 29562306a36Sopenharmony_ci 29662306a36Sopenharmony_ci#define DEFINE_NFSD_FH_ERR_EVENT(name) \ 29762306a36Sopenharmony_ciDEFINE_EVENT(nfsd_fh_err_class, nfsd_##name, \ 29862306a36Sopenharmony_ci TP_PROTO(struct svc_rqst *rqstp, \ 29962306a36Sopenharmony_ci struct svc_fh *fhp, \ 30062306a36Sopenharmony_ci int status), \ 30162306a36Sopenharmony_ci TP_ARGS(rqstp, fhp, status)) 30262306a36Sopenharmony_ci 30362306a36Sopenharmony_ciDEFINE_NFSD_FH_ERR_EVENT(set_fh_dentry_badexport); 30462306a36Sopenharmony_ciDEFINE_NFSD_FH_ERR_EVENT(set_fh_dentry_badhandle); 30562306a36Sopenharmony_ci 30662306a36Sopenharmony_ciTRACE_EVENT(nfsd_exp_find_key, 30762306a36Sopenharmony_ci TP_PROTO(const struct svc_expkey *key, 30862306a36Sopenharmony_ci int status), 30962306a36Sopenharmony_ci TP_ARGS(key, status), 31062306a36Sopenharmony_ci TP_STRUCT__entry( 31162306a36Sopenharmony_ci __field(int, fsidtype) 31262306a36Sopenharmony_ci __array(u32, fsid, 6) 31362306a36Sopenharmony_ci __string(auth_domain, key->ek_client->name) 31462306a36Sopenharmony_ci __field(int, status) 31562306a36Sopenharmony_ci ), 31662306a36Sopenharmony_ci TP_fast_assign( 31762306a36Sopenharmony_ci __entry->fsidtype = key->ek_fsidtype; 31862306a36Sopenharmony_ci memcpy(__entry->fsid, key->ek_fsid, 4*6); 31962306a36Sopenharmony_ci __assign_str(auth_domain, key->ek_client->name); 32062306a36Sopenharmony_ci __entry->status = status; 32162306a36Sopenharmony_ci ), 32262306a36Sopenharmony_ci TP_printk("fsid=%x::%s domain=%s status=%d", 32362306a36Sopenharmony_ci __entry->fsidtype, 32462306a36Sopenharmony_ci __print_array(__entry->fsid, 6, 4), 32562306a36Sopenharmony_ci __get_str(auth_domain), 32662306a36Sopenharmony_ci __entry->status 32762306a36Sopenharmony_ci ) 32862306a36Sopenharmony_ci); 32962306a36Sopenharmony_ci 33062306a36Sopenharmony_ciTRACE_EVENT(nfsd_expkey_update, 33162306a36Sopenharmony_ci TP_PROTO(const struct svc_expkey *key, const char *exp_path), 33262306a36Sopenharmony_ci TP_ARGS(key, exp_path), 33362306a36Sopenharmony_ci TP_STRUCT__entry( 33462306a36Sopenharmony_ci __field(int, fsidtype) 33562306a36Sopenharmony_ci __array(u32, fsid, 6) 33662306a36Sopenharmony_ci __string(auth_domain, key->ek_client->name) 33762306a36Sopenharmony_ci __string(path, exp_path) 33862306a36Sopenharmony_ci __field(bool, cache) 33962306a36Sopenharmony_ci ), 34062306a36Sopenharmony_ci TP_fast_assign( 34162306a36Sopenharmony_ci __entry->fsidtype = key->ek_fsidtype; 34262306a36Sopenharmony_ci memcpy(__entry->fsid, key->ek_fsid, 4*6); 34362306a36Sopenharmony_ci __assign_str(auth_domain, key->ek_client->name); 34462306a36Sopenharmony_ci __assign_str(path, exp_path); 34562306a36Sopenharmony_ci __entry->cache = !test_bit(CACHE_NEGATIVE, &key->h.flags); 34662306a36Sopenharmony_ci ), 34762306a36Sopenharmony_ci TP_printk("fsid=%x::%s domain=%s path=%s cache=%s", 34862306a36Sopenharmony_ci __entry->fsidtype, 34962306a36Sopenharmony_ci __print_array(__entry->fsid, 6, 4), 35062306a36Sopenharmony_ci __get_str(auth_domain), 35162306a36Sopenharmony_ci __get_str(path), 35262306a36Sopenharmony_ci __entry->cache ? "pos" : "neg" 35362306a36Sopenharmony_ci ) 35462306a36Sopenharmony_ci); 35562306a36Sopenharmony_ci 35662306a36Sopenharmony_ciTRACE_EVENT(nfsd_exp_get_by_name, 35762306a36Sopenharmony_ci TP_PROTO(const struct svc_export *key, 35862306a36Sopenharmony_ci int status), 35962306a36Sopenharmony_ci TP_ARGS(key, status), 36062306a36Sopenharmony_ci TP_STRUCT__entry( 36162306a36Sopenharmony_ci __string(path, key->ex_path.dentry->d_name.name) 36262306a36Sopenharmony_ci __string(auth_domain, key->ex_client->name) 36362306a36Sopenharmony_ci __field(int, status) 36462306a36Sopenharmony_ci ), 36562306a36Sopenharmony_ci TP_fast_assign( 36662306a36Sopenharmony_ci __assign_str(path, key->ex_path.dentry->d_name.name); 36762306a36Sopenharmony_ci __assign_str(auth_domain, key->ex_client->name); 36862306a36Sopenharmony_ci __entry->status = status; 36962306a36Sopenharmony_ci ), 37062306a36Sopenharmony_ci TP_printk("path=%s domain=%s status=%d", 37162306a36Sopenharmony_ci __get_str(path), 37262306a36Sopenharmony_ci __get_str(auth_domain), 37362306a36Sopenharmony_ci __entry->status 37462306a36Sopenharmony_ci ) 37562306a36Sopenharmony_ci); 37662306a36Sopenharmony_ci 37762306a36Sopenharmony_ciTRACE_EVENT(nfsd_export_update, 37862306a36Sopenharmony_ci TP_PROTO(const struct svc_export *key), 37962306a36Sopenharmony_ci TP_ARGS(key), 38062306a36Sopenharmony_ci TP_STRUCT__entry( 38162306a36Sopenharmony_ci __string(path, key->ex_path.dentry->d_name.name) 38262306a36Sopenharmony_ci __string(auth_domain, key->ex_client->name) 38362306a36Sopenharmony_ci __field(bool, cache) 38462306a36Sopenharmony_ci ), 38562306a36Sopenharmony_ci TP_fast_assign( 38662306a36Sopenharmony_ci __assign_str(path, key->ex_path.dentry->d_name.name); 38762306a36Sopenharmony_ci __assign_str(auth_domain, key->ex_client->name); 38862306a36Sopenharmony_ci __entry->cache = !test_bit(CACHE_NEGATIVE, &key->h.flags); 38962306a36Sopenharmony_ci ), 39062306a36Sopenharmony_ci TP_printk("path=%s domain=%s cache=%s", 39162306a36Sopenharmony_ci __get_str(path), 39262306a36Sopenharmony_ci __get_str(auth_domain), 39362306a36Sopenharmony_ci __entry->cache ? "pos" : "neg" 39462306a36Sopenharmony_ci ) 39562306a36Sopenharmony_ci); 39662306a36Sopenharmony_ci 39762306a36Sopenharmony_ciDECLARE_EVENT_CLASS(nfsd_io_class, 39862306a36Sopenharmony_ci TP_PROTO(struct svc_rqst *rqstp, 39962306a36Sopenharmony_ci struct svc_fh *fhp, 40062306a36Sopenharmony_ci u64 offset, 40162306a36Sopenharmony_ci u32 len), 40262306a36Sopenharmony_ci TP_ARGS(rqstp, fhp, offset, len), 40362306a36Sopenharmony_ci TP_STRUCT__entry( 40462306a36Sopenharmony_ci __field(u32, xid) 40562306a36Sopenharmony_ci __field(u32, fh_hash) 40662306a36Sopenharmony_ci __field(u64, offset) 40762306a36Sopenharmony_ci __field(u32, len) 40862306a36Sopenharmony_ci ), 40962306a36Sopenharmony_ci TP_fast_assign( 41062306a36Sopenharmony_ci __entry->xid = be32_to_cpu(rqstp->rq_xid); 41162306a36Sopenharmony_ci __entry->fh_hash = knfsd_fh_hash(&fhp->fh_handle); 41262306a36Sopenharmony_ci __entry->offset = offset; 41362306a36Sopenharmony_ci __entry->len = len; 41462306a36Sopenharmony_ci ), 41562306a36Sopenharmony_ci TP_printk("xid=0x%08x fh_hash=0x%08x offset=%llu len=%u", 41662306a36Sopenharmony_ci __entry->xid, __entry->fh_hash, 41762306a36Sopenharmony_ci __entry->offset, __entry->len) 41862306a36Sopenharmony_ci) 41962306a36Sopenharmony_ci 42062306a36Sopenharmony_ci#define DEFINE_NFSD_IO_EVENT(name) \ 42162306a36Sopenharmony_ciDEFINE_EVENT(nfsd_io_class, nfsd_##name, \ 42262306a36Sopenharmony_ci TP_PROTO(struct svc_rqst *rqstp, \ 42362306a36Sopenharmony_ci struct svc_fh *fhp, \ 42462306a36Sopenharmony_ci u64 offset, \ 42562306a36Sopenharmony_ci u32 len), \ 42662306a36Sopenharmony_ci TP_ARGS(rqstp, fhp, offset, len)) 42762306a36Sopenharmony_ci 42862306a36Sopenharmony_ciDEFINE_NFSD_IO_EVENT(read_start); 42962306a36Sopenharmony_ciDEFINE_NFSD_IO_EVENT(read_splice); 43062306a36Sopenharmony_ciDEFINE_NFSD_IO_EVENT(read_vector); 43162306a36Sopenharmony_ciDEFINE_NFSD_IO_EVENT(read_io_done); 43262306a36Sopenharmony_ciDEFINE_NFSD_IO_EVENT(read_done); 43362306a36Sopenharmony_ciDEFINE_NFSD_IO_EVENT(write_start); 43462306a36Sopenharmony_ciDEFINE_NFSD_IO_EVENT(write_opened); 43562306a36Sopenharmony_ciDEFINE_NFSD_IO_EVENT(write_io_done); 43662306a36Sopenharmony_ciDEFINE_NFSD_IO_EVENT(write_done); 43762306a36Sopenharmony_ci 43862306a36Sopenharmony_ciDECLARE_EVENT_CLASS(nfsd_err_class, 43962306a36Sopenharmony_ci TP_PROTO(struct svc_rqst *rqstp, 44062306a36Sopenharmony_ci struct svc_fh *fhp, 44162306a36Sopenharmony_ci loff_t offset, 44262306a36Sopenharmony_ci int status), 44362306a36Sopenharmony_ci TP_ARGS(rqstp, fhp, offset, status), 44462306a36Sopenharmony_ci TP_STRUCT__entry( 44562306a36Sopenharmony_ci __field(u32, xid) 44662306a36Sopenharmony_ci __field(u32, fh_hash) 44762306a36Sopenharmony_ci __field(loff_t, offset) 44862306a36Sopenharmony_ci __field(int, status) 44962306a36Sopenharmony_ci ), 45062306a36Sopenharmony_ci TP_fast_assign( 45162306a36Sopenharmony_ci __entry->xid = be32_to_cpu(rqstp->rq_xid); 45262306a36Sopenharmony_ci __entry->fh_hash = knfsd_fh_hash(&fhp->fh_handle); 45362306a36Sopenharmony_ci __entry->offset = offset; 45462306a36Sopenharmony_ci __entry->status = status; 45562306a36Sopenharmony_ci ), 45662306a36Sopenharmony_ci TP_printk("xid=0x%08x fh_hash=0x%08x offset=%lld status=%d", 45762306a36Sopenharmony_ci __entry->xid, __entry->fh_hash, 45862306a36Sopenharmony_ci __entry->offset, __entry->status) 45962306a36Sopenharmony_ci) 46062306a36Sopenharmony_ci 46162306a36Sopenharmony_ci#define DEFINE_NFSD_ERR_EVENT(name) \ 46262306a36Sopenharmony_ciDEFINE_EVENT(nfsd_err_class, nfsd_##name, \ 46362306a36Sopenharmony_ci TP_PROTO(struct svc_rqst *rqstp, \ 46462306a36Sopenharmony_ci struct svc_fh *fhp, \ 46562306a36Sopenharmony_ci loff_t offset, \ 46662306a36Sopenharmony_ci int len), \ 46762306a36Sopenharmony_ci TP_ARGS(rqstp, fhp, offset, len)) 46862306a36Sopenharmony_ci 46962306a36Sopenharmony_ciDEFINE_NFSD_ERR_EVENT(read_err); 47062306a36Sopenharmony_ciDEFINE_NFSD_ERR_EVENT(write_err); 47162306a36Sopenharmony_ci 47262306a36Sopenharmony_ciTRACE_EVENT(nfsd_dirent, 47362306a36Sopenharmony_ci TP_PROTO(struct svc_fh *fhp, 47462306a36Sopenharmony_ci u64 ino, 47562306a36Sopenharmony_ci const char *name, 47662306a36Sopenharmony_ci int namlen), 47762306a36Sopenharmony_ci TP_ARGS(fhp, ino, name, namlen), 47862306a36Sopenharmony_ci TP_STRUCT__entry( 47962306a36Sopenharmony_ci __field(u32, fh_hash) 48062306a36Sopenharmony_ci __field(u64, ino) 48162306a36Sopenharmony_ci __string_len(name, name, namlen) 48262306a36Sopenharmony_ci ), 48362306a36Sopenharmony_ci TP_fast_assign( 48462306a36Sopenharmony_ci __entry->fh_hash = fhp ? knfsd_fh_hash(&fhp->fh_handle) : 0; 48562306a36Sopenharmony_ci __entry->ino = ino; 48662306a36Sopenharmony_ci __assign_str_len(name, name, namlen) 48762306a36Sopenharmony_ci ), 48862306a36Sopenharmony_ci TP_printk("fh_hash=0x%08x ino=%llu name=%s", 48962306a36Sopenharmony_ci __entry->fh_hash, __entry->ino, __get_str(name) 49062306a36Sopenharmony_ci ) 49162306a36Sopenharmony_ci) 49262306a36Sopenharmony_ci 49362306a36Sopenharmony_ciDECLARE_EVENT_CLASS(nfsd_copy_err_class, 49462306a36Sopenharmony_ci TP_PROTO(struct svc_rqst *rqstp, 49562306a36Sopenharmony_ci struct svc_fh *src_fhp, 49662306a36Sopenharmony_ci loff_t src_offset, 49762306a36Sopenharmony_ci struct svc_fh *dst_fhp, 49862306a36Sopenharmony_ci loff_t dst_offset, 49962306a36Sopenharmony_ci u64 count, 50062306a36Sopenharmony_ci int status), 50162306a36Sopenharmony_ci TP_ARGS(rqstp, src_fhp, src_offset, dst_fhp, dst_offset, count, status), 50262306a36Sopenharmony_ci TP_STRUCT__entry( 50362306a36Sopenharmony_ci __field(u32, xid) 50462306a36Sopenharmony_ci __field(u32, src_fh_hash) 50562306a36Sopenharmony_ci __field(loff_t, src_offset) 50662306a36Sopenharmony_ci __field(u32, dst_fh_hash) 50762306a36Sopenharmony_ci __field(loff_t, dst_offset) 50862306a36Sopenharmony_ci __field(u64, count) 50962306a36Sopenharmony_ci __field(int, status) 51062306a36Sopenharmony_ci ), 51162306a36Sopenharmony_ci TP_fast_assign( 51262306a36Sopenharmony_ci __entry->xid = be32_to_cpu(rqstp->rq_xid); 51362306a36Sopenharmony_ci __entry->src_fh_hash = knfsd_fh_hash(&src_fhp->fh_handle); 51462306a36Sopenharmony_ci __entry->src_offset = src_offset; 51562306a36Sopenharmony_ci __entry->dst_fh_hash = knfsd_fh_hash(&dst_fhp->fh_handle); 51662306a36Sopenharmony_ci __entry->dst_offset = dst_offset; 51762306a36Sopenharmony_ci __entry->count = count; 51862306a36Sopenharmony_ci __entry->status = status; 51962306a36Sopenharmony_ci ), 52062306a36Sopenharmony_ci TP_printk("xid=0x%08x src_fh_hash=0x%08x src_offset=%lld " 52162306a36Sopenharmony_ci "dst_fh_hash=0x%08x dst_offset=%lld " 52262306a36Sopenharmony_ci "count=%llu status=%d", 52362306a36Sopenharmony_ci __entry->xid, __entry->src_fh_hash, __entry->src_offset, 52462306a36Sopenharmony_ci __entry->dst_fh_hash, __entry->dst_offset, 52562306a36Sopenharmony_ci (unsigned long long)__entry->count, 52662306a36Sopenharmony_ci __entry->status) 52762306a36Sopenharmony_ci) 52862306a36Sopenharmony_ci 52962306a36Sopenharmony_ci#define DEFINE_NFSD_COPY_ERR_EVENT(name) \ 53062306a36Sopenharmony_ciDEFINE_EVENT(nfsd_copy_err_class, nfsd_##name, \ 53162306a36Sopenharmony_ci TP_PROTO(struct svc_rqst *rqstp, \ 53262306a36Sopenharmony_ci struct svc_fh *src_fhp, \ 53362306a36Sopenharmony_ci loff_t src_offset, \ 53462306a36Sopenharmony_ci struct svc_fh *dst_fhp, \ 53562306a36Sopenharmony_ci loff_t dst_offset, \ 53662306a36Sopenharmony_ci u64 count, \ 53762306a36Sopenharmony_ci int status), \ 53862306a36Sopenharmony_ci TP_ARGS(rqstp, src_fhp, src_offset, dst_fhp, dst_offset, \ 53962306a36Sopenharmony_ci count, status)) 54062306a36Sopenharmony_ci 54162306a36Sopenharmony_ciDEFINE_NFSD_COPY_ERR_EVENT(clone_file_range_err); 54262306a36Sopenharmony_ci 54362306a36Sopenharmony_ci#include "state.h" 54462306a36Sopenharmony_ci#include "filecache.h" 54562306a36Sopenharmony_ci#include "vfs.h" 54662306a36Sopenharmony_ci 54762306a36Sopenharmony_ciTRACE_EVENT(nfsd_delegret_wakeup, 54862306a36Sopenharmony_ci TP_PROTO( 54962306a36Sopenharmony_ci const struct svc_rqst *rqstp, 55062306a36Sopenharmony_ci const struct inode *inode, 55162306a36Sopenharmony_ci long timeo 55262306a36Sopenharmony_ci ), 55362306a36Sopenharmony_ci TP_ARGS(rqstp, inode, timeo), 55462306a36Sopenharmony_ci TP_STRUCT__entry( 55562306a36Sopenharmony_ci __field(u32, xid) 55662306a36Sopenharmony_ci __field(const void *, inode) 55762306a36Sopenharmony_ci __field(long, timeo) 55862306a36Sopenharmony_ci ), 55962306a36Sopenharmony_ci TP_fast_assign( 56062306a36Sopenharmony_ci __entry->xid = be32_to_cpu(rqstp->rq_xid); 56162306a36Sopenharmony_ci __entry->inode = inode; 56262306a36Sopenharmony_ci __entry->timeo = timeo; 56362306a36Sopenharmony_ci ), 56462306a36Sopenharmony_ci TP_printk("xid=0x%08x inode=%p%s", 56562306a36Sopenharmony_ci __entry->xid, __entry->inode, 56662306a36Sopenharmony_ci __entry->timeo == 0 ? " (timed out)" : "" 56762306a36Sopenharmony_ci ) 56862306a36Sopenharmony_ci); 56962306a36Sopenharmony_ci 57062306a36Sopenharmony_ciDECLARE_EVENT_CLASS(nfsd_stateid_class, 57162306a36Sopenharmony_ci TP_PROTO(stateid_t *stp), 57262306a36Sopenharmony_ci TP_ARGS(stp), 57362306a36Sopenharmony_ci TP_STRUCT__entry( 57462306a36Sopenharmony_ci __field(u32, cl_boot) 57562306a36Sopenharmony_ci __field(u32, cl_id) 57662306a36Sopenharmony_ci __field(u32, si_id) 57762306a36Sopenharmony_ci __field(u32, si_generation) 57862306a36Sopenharmony_ci ), 57962306a36Sopenharmony_ci TP_fast_assign( 58062306a36Sopenharmony_ci __entry->cl_boot = stp->si_opaque.so_clid.cl_boot; 58162306a36Sopenharmony_ci __entry->cl_id = stp->si_opaque.so_clid.cl_id; 58262306a36Sopenharmony_ci __entry->si_id = stp->si_opaque.so_id; 58362306a36Sopenharmony_ci __entry->si_generation = stp->si_generation; 58462306a36Sopenharmony_ci ), 58562306a36Sopenharmony_ci TP_printk("client %08x:%08x stateid %08x:%08x", 58662306a36Sopenharmony_ci __entry->cl_boot, 58762306a36Sopenharmony_ci __entry->cl_id, 58862306a36Sopenharmony_ci __entry->si_id, 58962306a36Sopenharmony_ci __entry->si_generation) 59062306a36Sopenharmony_ci) 59162306a36Sopenharmony_ci 59262306a36Sopenharmony_ci#define DEFINE_STATEID_EVENT(name) \ 59362306a36Sopenharmony_ciDEFINE_EVENT(nfsd_stateid_class, nfsd_##name, \ 59462306a36Sopenharmony_ci TP_PROTO(stateid_t *stp), \ 59562306a36Sopenharmony_ci TP_ARGS(stp)) 59662306a36Sopenharmony_ci 59762306a36Sopenharmony_ciDEFINE_STATEID_EVENT(layoutstate_alloc); 59862306a36Sopenharmony_ciDEFINE_STATEID_EVENT(layoutstate_unhash); 59962306a36Sopenharmony_ciDEFINE_STATEID_EVENT(layoutstate_free); 60062306a36Sopenharmony_ciDEFINE_STATEID_EVENT(layout_get_lookup_fail); 60162306a36Sopenharmony_ciDEFINE_STATEID_EVENT(layout_commit_lookup_fail); 60262306a36Sopenharmony_ciDEFINE_STATEID_EVENT(layout_return_lookup_fail); 60362306a36Sopenharmony_ciDEFINE_STATEID_EVENT(layout_recall); 60462306a36Sopenharmony_ciDEFINE_STATEID_EVENT(layout_recall_done); 60562306a36Sopenharmony_ciDEFINE_STATEID_EVENT(layout_recall_fail); 60662306a36Sopenharmony_ciDEFINE_STATEID_EVENT(layout_recall_release); 60762306a36Sopenharmony_ci 60862306a36Sopenharmony_ciDEFINE_STATEID_EVENT(open); 60962306a36Sopenharmony_ciDEFINE_STATEID_EVENT(deleg_read); 61062306a36Sopenharmony_ciDEFINE_STATEID_EVENT(deleg_write); 61162306a36Sopenharmony_ciDEFINE_STATEID_EVENT(deleg_return); 61262306a36Sopenharmony_ciDEFINE_STATEID_EVENT(deleg_recall); 61362306a36Sopenharmony_ci 61462306a36Sopenharmony_ciDECLARE_EVENT_CLASS(nfsd_stateseqid_class, 61562306a36Sopenharmony_ci TP_PROTO(u32 seqid, const stateid_t *stp), 61662306a36Sopenharmony_ci TP_ARGS(seqid, stp), 61762306a36Sopenharmony_ci TP_STRUCT__entry( 61862306a36Sopenharmony_ci __field(u32, seqid) 61962306a36Sopenharmony_ci __field(u32, cl_boot) 62062306a36Sopenharmony_ci __field(u32, cl_id) 62162306a36Sopenharmony_ci __field(u32, si_id) 62262306a36Sopenharmony_ci __field(u32, si_generation) 62362306a36Sopenharmony_ci ), 62462306a36Sopenharmony_ci TP_fast_assign( 62562306a36Sopenharmony_ci __entry->seqid = seqid; 62662306a36Sopenharmony_ci __entry->cl_boot = stp->si_opaque.so_clid.cl_boot; 62762306a36Sopenharmony_ci __entry->cl_id = stp->si_opaque.so_clid.cl_id; 62862306a36Sopenharmony_ci __entry->si_id = stp->si_opaque.so_id; 62962306a36Sopenharmony_ci __entry->si_generation = stp->si_generation; 63062306a36Sopenharmony_ci ), 63162306a36Sopenharmony_ci TP_printk("seqid=%u client %08x:%08x stateid %08x:%08x", 63262306a36Sopenharmony_ci __entry->seqid, __entry->cl_boot, __entry->cl_id, 63362306a36Sopenharmony_ci __entry->si_id, __entry->si_generation) 63462306a36Sopenharmony_ci) 63562306a36Sopenharmony_ci 63662306a36Sopenharmony_ci#define DEFINE_STATESEQID_EVENT(name) \ 63762306a36Sopenharmony_ciDEFINE_EVENT(nfsd_stateseqid_class, nfsd_##name, \ 63862306a36Sopenharmony_ci TP_PROTO(u32 seqid, const stateid_t *stp), \ 63962306a36Sopenharmony_ci TP_ARGS(seqid, stp)) 64062306a36Sopenharmony_ci 64162306a36Sopenharmony_ciDEFINE_STATESEQID_EVENT(preprocess); 64262306a36Sopenharmony_ciDEFINE_STATESEQID_EVENT(open_confirm); 64362306a36Sopenharmony_ci 64462306a36Sopenharmony_ciTRACE_DEFINE_ENUM(NFS4_OPEN_STID); 64562306a36Sopenharmony_ciTRACE_DEFINE_ENUM(NFS4_LOCK_STID); 64662306a36Sopenharmony_ciTRACE_DEFINE_ENUM(NFS4_DELEG_STID); 64762306a36Sopenharmony_ciTRACE_DEFINE_ENUM(NFS4_CLOSED_STID); 64862306a36Sopenharmony_ciTRACE_DEFINE_ENUM(NFS4_REVOKED_DELEG_STID); 64962306a36Sopenharmony_ciTRACE_DEFINE_ENUM(NFS4_CLOSED_DELEG_STID); 65062306a36Sopenharmony_ciTRACE_DEFINE_ENUM(NFS4_LAYOUT_STID); 65162306a36Sopenharmony_ci 65262306a36Sopenharmony_ci#define show_stid_type(x) \ 65362306a36Sopenharmony_ci __print_flags(x, "|", \ 65462306a36Sopenharmony_ci { NFS4_OPEN_STID, "OPEN" }, \ 65562306a36Sopenharmony_ci { NFS4_LOCK_STID, "LOCK" }, \ 65662306a36Sopenharmony_ci { NFS4_DELEG_STID, "DELEG" }, \ 65762306a36Sopenharmony_ci { NFS4_CLOSED_STID, "CLOSED" }, \ 65862306a36Sopenharmony_ci { NFS4_REVOKED_DELEG_STID, "REVOKED" }, \ 65962306a36Sopenharmony_ci { NFS4_CLOSED_DELEG_STID, "CLOSED_DELEG" }, \ 66062306a36Sopenharmony_ci { NFS4_LAYOUT_STID, "LAYOUT" }) 66162306a36Sopenharmony_ci 66262306a36Sopenharmony_ciDECLARE_EVENT_CLASS(nfsd_stid_class, 66362306a36Sopenharmony_ci TP_PROTO( 66462306a36Sopenharmony_ci const struct nfs4_stid *stid 66562306a36Sopenharmony_ci ), 66662306a36Sopenharmony_ci TP_ARGS(stid), 66762306a36Sopenharmony_ci TP_STRUCT__entry( 66862306a36Sopenharmony_ci __field(unsigned long, sc_type) 66962306a36Sopenharmony_ci __field(int, sc_count) 67062306a36Sopenharmony_ci __field(u32, cl_boot) 67162306a36Sopenharmony_ci __field(u32, cl_id) 67262306a36Sopenharmony_ci __field(u32, si_id) 67362306a36Sopenharmony_ci __field(u32, si_generation) 67462306a36Sopenharmony_ci ), 67562306a36Sopenharmony_ci TP_fast_assign( 67662306a36Sopenharmony_ci const stateid_t *stp = &stid->sc_stateid; 67762306a36Sopenharmony_ci 67862306a36Sopenharmony_ci __entry->sc_type = stid->sc_type; 67962306a36Sopenharmony_ci __entry->sc_count = refcount_read(&stid->sc_count); 68062306a36Sopenharmony_ci __entry->cl_boot = stp->si_opaque.so_clid.cl_boot; 68162306a36Sopenharmony_ci __entry->cl_id = stp->si_opaque.so_clid.cl_id; 68262306a36Sopenharmony_ci __entry->si_id = stp->si_opaque.so_id; 68362306a36Sopenharmony_ci __entry->si_generation = stp->si_generation; 68462306a36Sopenharmony_ci ), 68562306a36Sopenharmony_ci TP_printk("client %08x:%08x stateid %08x:%08x ref=%d type=%s", 68662306a36Sopenharmony_ci __entry->cl_boot, __entry->cl_id, 68762306a36Sopenharmony_ci __entry->si_id, __entry->si_generation, 68862306a36Sopenharmony_ci __entry->sc_count, show_stid_type(__entry->sc_type) 68962306a36Sopenharmony_ci ) 69062306a36Sopenharmony_ci); 69162306a36Sopenharmony_ci 69262306a36Sopenharmony_ci#define DEFINE_STID_EVENT(name) \ 69362306a36Sopenharmony_ciDEFINE_EVENT(nfsd_stid_class, nfsd_stid_##name, \ 69462306a36Sopenharmony_ci TP_PROTO(const struct nfs4_stid *stid), \ 69562306a36Sopenharmony_ci TP_ARGS(stid)) 69662306a36Sopenharmony_ci 69762306a36Sopenharmony_ciDEFINE_STID_EVENT(revoke); 69862306a36Sopenharmony_ci 69962306a36Sopenharmony_ciDECLARE_EVENT_CLASS(nfsd_clientid_class, 70062306a36Sopenharmony_ci TP_PROTO(const clientid_t *clid), 70162306a36Sopenharmony_ci TP_ARGS(clid), 70262306a36Sopenharmony_ci TP_STRUCT__entry( 70362306a36Sopenharmony_ci __field(u32, cl_boot) 70462306a36Sopenharmony_ci __field(u32, cl_id) 70562306a36Sopenharmony_ci ), 70662306a36Sopenharmony_ci TP_fast_assign( 70762306a36Sopenharmony_ci __entry->cl_boot = clid->cl_boot; 70862306a36Sopenharmony_ci __entry->cl_id = clid->cl_id; 70962306a36Sopenharmony_ci ), 71062306a36Sopenharmony_ci TP_printk("client %08x:%08x", __entry->cl_boot, __entry->cl_id) 71162306a36Sopenharmony_ci) 71262306a36Sopenharmony_ci 71362306a36Sopenharmony_ci#define DEFINE_CLIENTID_EVENT(name) \ 71462306a36Sopenharmony_ciDEFINE_EVENT(nfsd_clientid_class, nfsd_clid_##name, \ 71562306a36Sopenharmony_ci TP_PROTO(const clientid_t *clid), \ 71662306a36Sopenharmony_ci TP_ARGS(clid)) 71762306a36Sopenharmony_ci 71862306a36Sopenharmony_ciDEFINE_CLIENTID_EVENT(expire_unconf); 71962306a36Sopenharmony_ciDEFINE_CLIENTID_EVENT(reclaim_complete); 72062306a36Sopenharmony_ciDEFINE_CLIENTID_EVENT(confirmed); 72162306a36Sopenharmony_ciDEFINE_CLIENTID_EVENT(destroyed); 72262306a36Sopenharmony_ciDEFINE_CLIENTID_EVENT(admin_expired); 72362306a36Sopenharmony_ciDEFINE_CLIENTID_EVENT(replaced); 72462306a36Sopenharmony_ciDEFINE_CLIENTID_EVENT(purged); 72562306a36Sopenharmony_ciDEFINE_CLIENTID_EVENT(renew); 72662306a36Sopenharmony_ciDEFINE_CLIENTID_EVENT(stale); 72762306a36Sopenharmony_ci 72862306a36Sopenharmony_ciDECLARE_EVENT_CLASS(nfsd_net_class, 72962306a36Sopenharmony_ci TP_PROTO(const struct nfsd_net *nn), 73062306a36Sopenharmony_ci TP_ARGS(nn), 73162306a36Sopenharmony_ci TP_STRUCT__entry( 73262306a36Sopenharmony_ci __field(unsigned long long, boot_time) 73362306a36Sopenharmony_ci ), 73462306a36Sopenharmony_ci TP_fast_assign( 73562306a36Sopenharmony_ci __entry->boot_time = nn->boot_time; 73662306a36Sopenharmony_ci ), 73762306a36Sopenharmony_ci TP_printk("boot_time=%16llx", __entry->boot_time) 73862306a36Sopenharmony_ci) 73962306a36Sopenharmony_ci 74062306a36Sopenharmony_ci#define DEFINE_NET_EVENT(name) \ 74162306a36Sopenharmony_ciDEFINE_EVENT(nfsd_net_class, nfsd_##name, \ 74262306a36Sopenharmony_ci TP_PROTO(const struct nfsd_net *nn), \ 74362306a36Sopenharmony_ci TP_ARGS(nn)) 74462306a36Sopenharmony_ci 74562306a36Sopenharmony_ciDEFINE_NET_EVENT(grace_start); 74662306a36Sopenharmony_ciDEFINE_NET_EVENT(grace_complete); 74762306a36Sopenharmony_ci 74862306a36Sopenharmony_ciTRACE_EVENT(nfsd_writeverf_reset, 74962306a36Sopenharmony_ci TP_PROTO( 75062306a36Sopenharmony_ci const struct nfsd_net *nn, 75162306a36Sopenharmony_ci const struct svc_rqst *rqstp, 75262306a36Sopenharmony_ci int error 75362306a36Sopenharmony_ci ), 75462306a36Sopenharmony_ci TP_ARGS(nn, rqstp, error), 75562306a36Sopenharmony_ci TP_STRUCT__entry( 75662306a36Sopenharmony_ci __field(unsigned long long, boot_time) 75762306a36Sopenharmony_ci __field(u32, xid) 75862306a36Sopenharmony_ci __field(int, error) 75962306a36Sopenharmony_ci __array(unsigned char, verifier, NFS4_VERIFIER_SIZE) 76062306a36Sopenharmony_ci ), 76162306a36Sopenharmony_ci TP_fast_assign( 76262306a36Sopenharmony_ci __entry->boot_time = nn->boot_time; 76362306a36Sopenharmony_ci __entry->xid = be32_to_cpu(rqstp->rq_xid); 76462306a36Sopenharmony_ci __entry->error = error; 76562306a36Sopenharmony_ci 76662306a36Sopenharmony_ci /* avoid seqlock inside TP_fast_assign */ 76762306a36Sopenharmony_ci memcpy(__entry->verifier, nn->writeverf, 76862306a36Sopenharmony_ci NFS4_VERIFIER_SIZE); 76962306a36Sopenharmony_ci ), 77062306a36Sopenharmony_ci TP_printk("boot_time=%16llx xid=0x%08x error=%d new verifier=0x%s", 77162306a36Sopenharmony_ci __entry->boot_time, __entry->xid, __entry->error, 77262306a36Sopenharmony_ci __print_hex_str(__entry->verifier, NFS4_VERIFIER_SIZE) 77362306a36Sopenharmony_ci ) 77462306a36Sopenharmony_ci); 77562306a36Sopenharmony_ci 77662306a36Sopenharmony_ciTRACE_EVENT(nfsd_clid_cred_mismatch, 77762306a36Sopenharmony_ci TP_PROTO( 77862306a36Sopenharmony_ci const struct nfs4_client *clp, 77962306a36Sopenharmony_ci const struct svc_rqst *rqstp 78062306a36Sopenharmony_ci ), 78162306a36Sopenharmony_ci TP_ARGS(clp, rqstp), 78262306a36Sopenharmony_ci TP_STRUCT__entry( 78362306a36Sopenharmony_ci __field(u32, cl_boot) 78462306a36Sopenharmony_ci __field(u32, cl_id) 78562306a36Sopenharmony_ci __field(unsigned long, cl_flavor) 78662306a36Sopenharmony_ci __field(unsigned long, new_flavor) 78762306a36Sopenharmony_ci __sockaddr(addr, rqstp->rq_xprt->xpt_remotelen) 78862306a36Sopenharmony_ci ), 78962306a36Sopenharmony_ci TP_fast_assign( 79062306a36Sopenharmony_ci __entry->cl_boot = clp->cl_clientid.cl_boot; 79162306a36Sopenharmony_ci __entry->cl_id = clp->cl_clientid.cl_id; 79262306a36Sopenharmony_ci __entry->cl_flavor = clp->cl_cred.cr_flavor; 79362306a36Sopenharmony_ci __entry->new_flavor = rqstp->rq_cred.cr_flavor; 79462306a36Sopenharmony_ci __assign_sockaddr(addr, &rqstp->rq_xprt->xpt_remote, 79562306a36Sopenharmony_ci rqstp->rq_xprt->xpt_remotelen); 79662306a36Sopenharmony_ci ), 79762306a36Sopenharmony_ci TP_printk("client %08x:%08x flavor=%s, conflict=%s from addr=%pISpc", 79862306a36Sopenharmony_ci __entry->cl_boot, __entry->cl_id, 79962306a36Sopenharmony_ci show_nfsd_authflavor(__entry->cl_flavor), 80062306a36Sopenharmony_ci show_nfsd_authflavor(__entry->new_flavor), 80162306a36Sopenharmony_ci __get_sockaddr(addr) 80262306a36Sopenharmony_ci ) 80362306a36Sopenharmony_ci) 80462306a36Sopenharmony_ci 80562306a36Sopenharmony_ciTRACE_EVENT(nfsd_clid_verf_mismatch, 80662306a36Sopenharmony_ci TP_PROTO( 80762306a36Sopenharmony_ci const struct nfs4_client *clp, 80862306a36Sopenharmony_ci const struct svc_rqst *rqstp, 80962306a36Sopenharmony_ci const nfs4_verifier *verf 81062306a36Sopenharmony_ci ), 81162306a36Sopenharmony_ci TP_ARGS(clp, rqstp, verf), 81262306a36Sopenharmony_ci TP_STRUCT__entry( 81362306a36Sopenharmony_ci __field(u32, cl_boot) 81462306a36Sopenharmony_ci __field(u32, cl_id) 81562306a36Sopenharmony_ci __array(unsigned char, cl_verifier, NFS4_VERIFIER_SIZE) 81662306a36Sopenharmony_ci __array(unsigned char, new_verifier, NFS4_VERIFIER_SIZE) 81762306a36Sopenharmony_ci __sockaddr(addr, rqstp->rq_xprt->xpt_remotelen) 81862306a36Sopenharmony_ci ), 81962306a36Sopenharmony_ci TP_fast_assign( 82062306a36Sopenharmony_ci __entry->cl_boot = clp->cl_clientid.cl_boot; 82162306a36Sopenharmony_ci __entry->cl_id = clp->cl_clientid.cl_id; 82262306a36Sopenharmony_ci memcpy(__entry->cl_verifier, (void *)&clp->cl_verifier, 82362306a36Sopenharmony_ci NFS4_VERIFIER_SIZE); 82462306a36Sopenharmony_ci memcpy(__entry->new_verifier, (void *)verf, 82562306a36Sopenharmony_ci NFS4_VERIFIER_SIZE); 82662306a36Sopenharmony_ci __assign_sockaddr(addr, &rqstp->rq_xprt->xpt_remote, 82762306a36Sopenharmony_ci rqstp->rq_xprt->xpt_remotelen); 82862306a36Sopenharmony_ci ), 82962306a36Sopenharmony_ci TP_printk("client %08x:%08x verf=0x%s, updated=0x%s from addr=%pISpc", 83062306a36Sopenharmony_ci __entry->cl_boot, __entry->cl_id, 83162306a36Sopenharmony_ci __print_hex_str(__entry->cl_verifier, NFS4_VERIFIER_SIZE), 83262306a36Sopenharmony_ci __print_hex_str(__entry->new_verifier, NFS4_VERIFIER_SIZE), 83362306a36Sopenharmony_ci __get_sockaddr(addr) 83462306a36Sopenharmony_ci ) 83562306a36Sopenharmony_ci); 83662306a36Sopenharmony_ci 83762306a36Sopenharmony_ciDECLARE_EVENT_CLASS(nfsd_clid_class, 83862306a36Sopenharmony_ci TP_PROTO(const struct nfs4_client *clp), 83962306a36Sopenharmony_ci TP_ARGS(clp), 84062306a36Sopenharmony_ci TP_STRUCT__entry( 84162306a36Sopenharmony_ci __field(u32, cl_boot) 84262306a36Sopenharmony_ci __field(u32, cl_id) 84362306a36Sopenharmony_ci __array(unsigned char, addr, sizeof(struct sockaddr_in6)) 84462306a36Sopenharmony_ci __field(unsigned long, flavor) 84562306a36Sopenharmony_ci __array(unsigned char, verifier, NFS4_VERIFIER_SIZE) 84662306a36Sopenharmony_ci __string_len(name, name, clp->cl_name.len) 84762306a36Sopenharmony_ci ), 84862306a36Sopenharmony_ci TP_fast_assign( 84962306a36Sopenharmony_ci __entry->cl_boot = clp->cl_clientid.cl_boot; 85062306a36Sopenharmony_ci __entry->cl_id = clp->cl_clientid.cl_id; 85162306a36Sopenharmony_ci memcpy(__entry->addr, &clp->cl_addr, 85262306a36Sopenharmony_ci sizeof(struct sockaddr_in6)); 85362306a36Sopenharmony_ci __entry->flavor = clp->cl_cred.cr_flavor; 85462306a36Sopenharmony_ci memcpy(__entry->verifier, (void *)&clp->cl_verifier, 85562306a36Sopenharmony_ci NFS4_VERIFIER_SIZE); 85662306a36Sopenharmony_ci __assign_str_len(name, clp->cl_name.data, clp->cl_name.len); 85762306a36Sopenharmony_ci ), 85862306a36Sopenharmony_ci TP_printk("addr=%pISpc name='%s' verifier=0x%s flavor=%s client=%08x:%08x", 85962306a36Sopenharmony_ci __entry->addr, __get_str(name), 86062306a36Sopenharmony_ci __print_hex_str(__entry->verifier, NFS4_VERIFIER_SIZE), 86162306a36Sopenharmony_ci show_nfsd_authflavor(__entry->flavor), 86262306a36Sopenharmony_ci __entry->cl_boot, __entry->cl_id) 86362306a36Sopenharmony_ci); 86462306a36Sopenharmony_ci 86562306a36Sopenharmony_ci#define DEFINE_CLID_EVENT(name) \ 86662306a36Sopenharmony_ciDEFINE_EVENT(nfsd_clid_class, nfsd_clid_##name, \ 86762306a36Sopenharmony_ci TP_PROTO(const struct nfs4_client *clp), \ 86862306a36Sopenharmony_ci TP_ARGS(clp)) 86962306a36Sopenharmony_ci 87062306a36Sopenharmony_ciDEFINE_CLID_EVENT(fresh); 87162306a36Sopenharmony_ciDEFINE_CLID_EVENT(confirmed_r); 87262306a36Sopenharmony_ci 87362306a36Sopenharmony_ci/* 87462306a36Sopenharmony_ci * from fs/nfsd/filecache.h 87562306a36Sopenharmony_ci */ 87662306a36Sopenharmony_ci#define show_nf_flags(val) \ 87762306a36Sopenharmony_ci __print_flags(val, "|", \ 87862306a36Sopenharmony_ci { 1 << NFSD_FILE_HASHED, "HASHED" }, \ 87962306a36Sopenharmony_ci { 1 << NFSD_FILE_PENDING, "PENDING" }, \ 88062306a36Sopenharmony_ci { 1 << NFSD_FILE_REFERENCED, "REFERENCED" }, \ 88162306a36Sopenharmony_ci { 1 << NFSD_FILE_GC, "GC" }) 88262306a36Sopenharmony_ci 88362306a36Sopenharmony_ciDECLARE_EVENT_CLASS(nfsd_file_class, 88462306a36Sopenharmony_ci TP_PROTO(struct nfsd_file *nf), 88562306a36Sopenharmony_ci TP_ARGS(nf), 88662306a36Sopenharmony_ci TP_STRUCT__entry( 88762306a36Sopenharmony_ci __field(void *, nf_inode) 88862306a36Sopenharmony_ci __field(int, nf_ref) 88962306a36Sopenharmony_ci __field(unsigned long, nf_flags) 89062306a36Sopenharmony_ci __field(unsigned char, nf_may) 89162306a36Sopenharmony_ci __field(struct file *, nf_file) 89262306a36Sopenharmony_ci ), 89362306a36Sopenharmony_ci TP_fast_assign( 89462306a36Sopenharmony_ci __entry->nf_inode = nf->nf_inode; 89562306a36Sopenharmony_ci __entry->nf_ref = refcount_read(&nf->nf_ref); 89662306a36Sopenharmony_ci __entry->nf_flags = nf->nf_flags; 89762306a36Sopenharmony_ci __entry->nf_may = nf->nf_may; 89862306a36Sopenharmony_ci __entry->nf_file = nf->nf_file; 89962306a36Sopenharmony_ci ), 90062306a36Sopenharmony_ci TP_printk("inode=%p ref=%d flags=%s may=%s nf_file=%p", 90162306a36Sopenharmony_ci __entry->nf_inode, 90262306a36Sopenharmony_ci __entry->nf_ref, 90362306a36Sopenharmony_ci show_nf_flags(__entry->nf_flags), 90462306a36Sopenharmony_ci show_nfsd_may_flags(__entry->nf_may), 90562306a36Sopenharmony_ci __entry->nf_file) 90662306a36Sopenharmony_ci) 90762306a36Sopenharmony_ci 90862306a36Sopenharmony_ci#define DEFINE_NFSD_FILE_EVENT(name) \ 90962306a36Sopenharmony_ciDEFINE_EVENT(nfsd_file_class, name, \ 91062306a36Sopenharmony_ci TP_PROTO(struct nfsd_file *nf), \ 91162306a36Sopenharmony_ci TP_ARGS(nf)) 91262306a36Sopenharmony_ci 91362306a36Sopenharmony_ciDEFINE_NFSD_FILE_EVENT(nfsd_file_free); 91462306a36Sopenharmony_ciDEFINE_NFSD_FILE_EVENT(nfsd_file_unhash); 91562306a36Sopenharmony_ciDEFINE_NFSD_FILE_EVENT(nfsd_file_put); 91662306a36Sopenharmony_ciDEFINE_NFSD_FILE_EVENT(nfsd_file_closing); 91762306a36Sopenharmony_ciDEFINE_NFSD_FILE_EVENT(nfsd_file_unhash_and_queue); 91862306a36Sopenharmony_ci 91962306a36Sopenharmony_ciTRACE_EVENT(nfsd_file_alloc, 92062306a36Sopenharmony_ci TP_PROTO( 92162306a36Sopenharmony_ci const struct nfsd_file *nf 92262306a36Sopenharmony_ci ), 92362306a36Sopenharmony_ci TP_ARGS(nf), 92462306a36Sopenharmony_ci TP_STRUCT__entry( 92562306a36Sopenharmony_ci __field(const void *, nf_inode) 92662306a36Sopenharmony_ci __field(unsigned long, nf_flags) 92762306a36Sopenharmony_ci __field(unsigned long, nf_may) 92862306a36Sopenharmony_ci __field(unsigned int, nf_ref) 92962306a36Sopenharmony_ci ), 93062306a36Sopenharmony_ci TP_fast_assign( 93162306a36Sopenharmony_ci __entry->nf_inode = nf->nf_inode; 93262306a36Sopenharmony_ci __entry->nf_flags = nf->nf_flags; 93362306a36Sopenharmony_ci __entry->nf_ref = refcount_read(&nf->nf_ref); 93462306a36Sopenharmony_ci __entry->nf_may = nf->nf_may; 93562306a36Sopenharmony_ci ), 93662306a36Sopenharmony_ci TP_printk("inode=%p ref=%u flags=%s may=%s", 93762306a36Sopenharmony_ci __entry->nf_inode, __entry->nf_ref, 93862306a36Sopenharmony_ci show_nf_flags(__entry->nf_flags), 93962306a36Sopenharmony_ci show_nfsd_may_flags(__entry->nf_may) 94062306a36Sopenharmony_ci ) 94162306a36Sopenharmony_ci); 94262306a36Sopenharmony_ci 94362306a36Sopenharmony_ciTRACE_EVENT(nfsd_file_acquire, 94462306a36Sopenharmony_ci TP_PROTO( 94562306a36Sopenharmony_ci const struct svc_rqst *rqstp, 94662306a36Sopenharmony_ci const struct inode *inode, 94762306a36Sopenharmony_ci unsigned int may_flags, 94862306a36Sopenharmony_ci const struct nfsd_file *nf, 94962306a36Sopenharmony_ci __be32 status 95062306a36Sopenharmony_ci ), 95162306a36Sopenharmony_ci 95262306a36Sopenharmony_ci TP_ARGS(rqstp, inode, may_flags, nf, status), 95362306a36Sopenharmony_ci 95462306a36Sopenharmony_ci TP_STRUCT__entry( 95562306a36Sopenharmony_ci __field(u32, xid) 95662306a36Sopenharmony_ci __field(const void *, inode) 95762306a36Sopenharmony_ci __field(unsigned long, may_flags) 95862306a36Sopenharmony_ci __field(unsigned int, nf_ref) 95962306a36Sopenharmony_ci __field(unsigned long, nf_flags) 96062306a36Sopenharmony_ci __field(unsigned long, nf_may) 96162306a36Sopenharmony_ci __field(const void *, nf_file) 96262306a36Sopenharmony_ci __field(u32, status) 96362306a36Sopenharmony_ci ), 96462306a36Sopenharmony_ci 96562306a36Sopenharmony_ci TP_fast_assign( 96662306a36Sopenharmony_ci __entry->xid = be32_to_cpu(rqstp->rq_xid); 96762306a36Sopenharmony_ci __entry->inode = inode; 96862306a36Sopenharmony_ci __entry->may_flags = may_flags; 96962306a36Sopenharmony_ci __entry->nf_ref = nf ? refcount_read(&nf->nf_ref) : 0; 97062306a36Sopenharmony_ci __entry->nf_flags = nf ? nf->nf_flags : 0; 97162306a36Sopenharmony_ci __entry->nf_may = nf ? nf->nf_may : 0; 97262306a36Sopenharmony_ci __entry->nf_file = nf ? nf->nf_file : NULL; 97362306a36Sopenharmony_ci __entry->status = be32_to_cpu(status); 97462306a36Sopenharmony_ci ), 97562306a36Sopenharmony_ci 97662306a36Sopenharmony_ci TP_printk("xid=0x%x inode=%p may_flags=%s ref=%u nf_flags=%s nf_may=%s nf_file=%p status=%u", 97762306a36Sopenharmony_ci __entry->xid, __entry->inode, 97862306a36Sopenharmony_ci show_nfsd_may_flags(__entry->may_flags), 97962306a36Sopenharmony_ci __entry->nf_ref, show_nf_flags(__entry->nf_flags), 98062306a36Sopenharmony_ci show_nfsd_may_flags(__entry->nf_may), 98162306a36Sopenharmony_ci __entry->nf_file, __entry->status 98262306a36Sopenharmony_ci ) 98362306a36Sopenharmony_ci); 98462306a36Sopenharmony_ci 98562306a36Sopenharmony_ciTRACE_EVENT(nfsd_file_insert_err, 98662306a36Sopenharmony_ci TP_PROTO( 98762306a36Sopenharmony_ci const struct svc_rqst *rqstp, 98862306a36Sopenharmony_ci const struct inode *inode, 98962306a36Sopenharmony_ci unsigned int may_flags, 99062306a36Sopenharmony_ci long error 99162306a36Sopenharmony_ci ), 99262306a36Sopenharmony_ci TP_ARGS(rqstp, inode, may_flags, error), 99362306a36Sopenharmony_ci TP_STRUCT__entry( 99462306a36Sopenharmony_ci __field(u32, xid) 99562306a36Sopenharmony_ci __field(const void *, inode) 99662306a36Sopenharmony_ci __field(unsigned long, may_flags) 99762306a36Sopenharmony_ci __field(long, error) 99862306a36Sopenharmony_ci ), 99962306a36Sopenharmony_ci TP_fast_assign( 100062306a36Sopenharmony_ci __entry->xid = be32_to_cpu(rqstp->rq_xid); 100162306a36Sopenharmony_ci __entry->inode = inode; 100262306a36Sopenharmony_ci __entry->may_flags = may_flags; 100362306a36Sopenharmony_ci __entry->error = error; 100462306a36Sopenharmony_ci ), 100562306a36Sopenharmony_ci TP_printk("xid=0x%x inode=%p may_flags=%s error=%ld", 100662306a36Sopenharmony_ci __entry->xid, __entry->inode, 100762306a36Sopenharmony_ci show_nfsd_may_flags(__entry->may_flags), 100862306a36Sopenharmony_ci __entry->error 100962306a36Sopenharmony_ci ) 101062306a36Sopenharmony_ci); 101162306a36Sopenharmony_ci 101262306a36Sopenharmony_ciTRACE_EVENT(nfsd_file_cons_err, 101362306a36Sopenharmony_ci TP_PROTO( 101462306a36Sopenharmony_ci const struct svc_rqst *rqstp, 101562306a36Sopenharmony_ci const struct inode *inode, 101662306a36Sopenharmony_ci unsigned int may_flags, 101762306a36Sopenharmony_ci const struct nfsd_file *nf 101862306a36Sopenharmony_ci ), 101962306a36Sopenharmony_ci TP_ARGS(rqstp, inode, may_flags, nf), 102062306a36Sopenharmony_ci TP_STRUCT__entry( 102162306a36Sopenharmony_ci __field(u32, xid) 102262306a36Sopenharmony_ci __field(const void *, inode) 102362306a36Sopenharmony_ci __field(unsigned long, may_flags) 102462306a36Sopenharmony_ci __field(unsigned int, nf_ref) 102562306a36Sopenharmony_ci __field(unsigned long, nf_flags) 102662306a36Sopenharmony_ci __field(unsigned long, nf_may) 102762306a36Sopenharmony_ci __field(const void *, nf_file) 102862306a36Sopenharmony_ci ), 102962306a36Sopenharmony_ci TP_fast_assign( 103062306a36Sopenharmony_ci __entry->xid = be32_to_cpu(rqstp->rq_xid); 103162306a36Sopenharmony_ci __entry->inode = inode; 103262306a36Sopenharmony_ci __entry->may_flags = may_flags; 103362306a36Sopenharmony_ci __entry->nf_ref = refcount_read(&nf->nf_ref); 103462306a36Sopenharmony_ci __entry->nf_flags = nf->nf_flags; 103562306a36Sopenharmony_ci __entry->nf_may = nf->nf_may; 103662306a36Sopenharmony_ci __entry->nf_file = nf->nf_file; 103762306a36Sopenharmony_ci ), 103862306a36Sopenharmony_ci TP_printk("xid=0x%x inode=%p may_flags=%s ref=%u nf_flags=%s nf_may=%s nf_file=%p", 103962306a36Sopenharmony_ci __entry->xid, __entry->inode, 104062306a36Sopenharmony_ci show_nfsd_may_flags(__entry->may_flags), __entry->nf_ref, 104162306a36Sopenharmony_ci show_nf_flags(__entry->nf_flags), 104262306a36Sopenharmony_ci show_nfsd_may_flags(__entry->nf_may), __entry->nf_file 104362306a36Sopenharmony_ci ) 104462306a36Sopenharmony_ci); 104562306a36Sopenharmony_ci 104662306a36Sopenharmony_ciDECLARE_EVENT_CLASS(nfsd_file_open_class, 104762306a36Sopenharmony_ci TP_PROTO(const struct nfsd_file *nf, __be32 status), 104862306a36Sopenharmony_ci TP_ARGS(nf, status), 104962306a36Sopenharmony_ci TP_STRUCT__entry( 105062306a36Sopenharmony_ci __field(void *, nf_inode) /* cannot be dereferenced */ 105162306a36Sopenharmony_ci __field(int, nf_ref) 105262306a36Sopenharmony_ci __field(unsigned long, nf_flags) 105362306a36Sopenharmony_ci __field(unsigned long, nf_may) 105462306a36Sopenharmony_ci __field(void *, nf_file) /* cannot be dereferenced */ 105562306a36Sopenharmony_ci ), 105662306a36Sopenharmony_ci TP_fast_assign( 105762306a36Sopenharmony_ci __entry->nf_inode = nf->nf_inode; 105862306a36Sopenharmony_ci __entry->nf_ref = refcount_read(&nf->nf_ref); 105962306a36Sopenharmony_ci __entry->nf_flags = nf->nf_flags; 106062306a36Sopenharmony_ci __entry->nf_may = nf->nf_may; 106162306a36Sopenharmony_ci __entry->nf_file = nf->nf_file; 106262306a36Sopenharmony_ci ), 106362306a36Sopenharmony_ci TP_printk("inode=%p ref=%d flags=%s may=%s file=%p", 106462306a36Sopenharmony_ci __entry->nf_inode, 106562306a36Sopenharmony_ci __entry->nf_ref, 106662306a36Sopenharmony_ci show_nf_flags(__entry->nf_flags), 106762306a36Sopenharmony_ci show_nfsd_may_flags(__entry->nf_may), 106862306a36Sopenharmony_ci __entry->nf_file) 106962306a36Sopenharmony_ci) 107062306a36Sopenharmony_ci 107162306a36Sopenharmony_ci#define DEFINE_NFSD_FILE_OPEN_EVENT(name) \ 107262306a36Sopenharmony_ciDEFINE_EVENT(nfsd_file_open_class, name, \ 107362306a36Sopenharmony_ci TP_PROTO( \ 107462306a36Sopenharmony_ci const struct nfsd_file *nf, \ 107562306a36Sopenharmony_ci __be32 status \ 107662306a36Sopenharmony_ci ), \ 107762306a36Sopenharmony_ci TP_ARGS(nf, status)) 107862306a36Sopenharmony_ci 107962306a36Sopenharmony_ciDEFINE_NFSD_FILE_OPEN_EVENT(nfsd_file_open); 108062306a36Sopenharmony_ciDEFINE_NFSD_FILE_OPEN_EVENT(nfsd_file_opened); 108162306a36Sopenharmony_ci 108262306a36Sopenharmony_ciTRACE_EVENT(nfsd_file_is_cached, 108362306a36Sopenharmony_ci TP_PROTO( 108462306a36Sopenharmony_ci const struct inode *inode, 108562306a36Sopenharmony_ci int found 108662306a36Sopenharmony_ci ), 108762306a36Sopenharmony_ci TP_ARGS(inode, found), 108862306a36Sopenharmony_ci TP_STRUCT__entry( 108962306a36Sopenharmony_ci __field(const struct inode *, inode) 109062306a36Sopenharmony_ci __field(int, found) 109162306a36Sopenharmony_ci ), 109262306a36Sopenharmony_ci TP_fast_assign( 109362306a36Sopenharmony_ci __entry->inode = inode; 109462306a36Sopenharmony_ci __entry->found = found; 109562306a36Sopenharmony_ci ), 109662306a36Sopenharmony_ci TP_printk("inode=%p is %scached", 109762306a36Sopenharmony_ci __entry->inode, 109862306a36Sopenharmony_ci __entry->found ? "" : "not " 109962306a36Sopenharmony_ci ) 110062306a36Sopenharmony_ci); 110162306a36Sopenharmony_ci 110262306a36Sopenharmony_ciTRACE_EVENT(nfsd_file_fsnotify_handle_event, 110362306a36Sopenharmony_ci TP_PROTO(struct inode *inode, u32 mask), 110462306a36Sopenharmony_ci TP_ARGS(inode, mask), 110562306a36Sopenharmony_ci TP_STRUCT__entry( 110662306a36Sopenharmony_ci __field(struct inode *, inode) 110762306a36Sopenharmony_ci __field(unsigned int, nlink) 110862306a36Sopenharmony_ci __field(umode_t, mode) 110962306a36Sopenharmony_ci __field(u32, mask) 111062306a36Sopenharmony_ci ), 111162306a36Sopenharmony_ci TP_fast_assign( 111262306a36Sopenharmony_ci __entry->inode = inode; 111362306a36Sopenharmony_ci __entry->nlink = inode->i_nlink; 111462306a36Sopenharmony_ci __entry->mode = inode->i_mode; 111562306a36Sopenharmony_ci __entry->mask = mask; 111662306a36Sopenharmony_ci ), 111762306a36Sopenharmony_ci TP_printk("inode=%p nlink=%u mode=0%ho mask=0x%x", __entry->inode, 111862306a36Sopenharmony_ci __entry->nlink, __entry->mode, __entry->mask) 111962306a36Sopenharmony_ci); 112062306a36Sopenharmony_ci 112162306a36Sopenharmony_ciDECLARE_EVENT_CLASS(nfsd_file_gc_class, 112262306a36Sopenharmony_ci TP_PROTO( 112362306a36Sopenharmony_ci const struct nfsd_file *nf 112462306a36Sopenharmony_ci ), 112562306a36Sopenharmony_ci TP_ARGS(nf), 112662306a36Sopenharmony_ci TP_STRUCT__entry( 112762306a36Sopenharmony_ci __field(void *, nf_inode) 112862306a36Sopenharmony_ci __field(void *, nf_file) 112962306a36Sopenharmony_ci __field(int, nf_ref) 113062306a36Sopenharmony_ci __field(unsigned long, nf_flags) 113162306a36Sopenharmony_ci ), 113262306a36Sopenharmony_ci TP_fast_assign( 113362306a36Sopenharmony_ci __entry->nf_inode = nf->nf_inode; 113462306a36Sopenharmony_ci __entry->nf_file = nf->nf_file; 113562306a36Sopenharmony_ci __entry->nf_ref = refcount_read(&nf->nf_ref); 113662306a36Sopenharmony_ci __entry->nf_flags = nf->nf_flags; 113762306a36Sopenharmony_ci ), 113862306a36Sopenharmony_ci TP_printk("inode=%p ref=%d nf_flags=%s nf_file=%p", 113962306a36Sopenharmony_ci __entry->nf_inode, __entry->nf_ref, 114062306a36Sopenharmony_ci show_nf_flags(__entry->nf_flags), 114162306a36Sopenharmony_ci __entry->nf_file 114262306a36Sopenharmony_ci ) 114362306a36Sopenharmony_ci); 114462306a36Sopenharmony_ci 114562306a36Sopenharmony_ci#define DEFINE_NFSD_FILE_GC_EVENT(name) \ 114662306a36Sopenharmony_ciDEFINE_EVENT(nfsd_file_gc_class, name, \ 114762306a36Sopenharmony_ci TP_PROTO( \ 114862306a36Sopenharmony_ci const struct nfsd_file *nf \ 114962306a36Sopenharmony_ci ), \ 115062306a36Sopenharmony_ci TP_ARGS(nf)) 115162306a36Sopenharmony_ci 115262306a36Sopenharmony_ciDEFINE_NFSD_FILE_GC_EVENT(nfsd_file_lru_add); 115362306a36Sopenharmony_ciDEFINE_NFSD_FILE_GC_EVENT(nfsd_file_lru_add_disposed); 115462306a36Sopenharmony_ciDEFINE_NFSD_FILE_GC_EVENT(nfsd_file_lru_del); 115562306a36Sopenharmony_ciDEFINE_NFSD_FILE_GC_EVENT(nfsd_file_lru_del_disposed); 115662306a36Sopenharmony_ciDEFINE_NFSD_FILE_GC_EVENT(nfsd_file_gc_in_use); 115762306a36Sopenharmony_ciDEFINE_NFSD_FILE_GC_EVENT(nfsd_file_gc_writeback); 115862306a36Sopenharmony_ciDEFINE_NFSD_FILE_GC_EVENT(nfsd_file_gc_referenced); 115962306a36Sopenharmony_ciDEFINE_NFSD_FILE_GC_EVENT(nfsd_file_gc_disposed); 116062306a36Sopenharmony_ci 116162306a36Sopenharmony_ciDECLARE_EVENT_CLASS(nfsd_file_lruwalk_class, 116262306a36Sopenharmony_ci TP_PROTO( 116362306a36Sopenharmony_ci unsigned long removed, 116462306a36Sopenharmony_ci unsigned long remaining 116562306a36Sopenharmony_ci ), 116662306a36Sopenharmony_ci TP_ARGS(removed, remaining), 116762306a36Sopenharmony_ci TP_STRUCT__entry( 116862306a36Sopenharmony_ci __field(unsigned long, removed) 116962306a36Sopenharmony_ci __field(unsigned long, remaining) 117062306a36Sopenharmony_ci ), 117162306a36Sopenharmony_ci TP_fast_assign( 117262306a36Sopenharmony_ci __entry->removed = removed; 117362306a36Sopenharmony_ci __entry->remaining = remaining; 117462306a36Sopenharmony_ci ), 117562306a36Sopenharmony_ci TP_printk("%lu entries removed, %lu remaining", 117662306a36Sopenharmony_ci __entry->removed, __entry->remaining) 117762306a36Sopenharmony_ci); 117862306a36Sopenharmony_ci 117962306a36Sopenharmony_ci#define DEFINE_NFSD_FILE_LRUWALK_EVENT(name) \ 118062306a36Sopenharmony_ciDEFINE_EVENT(nfsd_file_lruwalk_class, name, \ 118162306a36Sopenharmony_ci TP_PROTO( \ 118262306a36Sopenharmony_ci unsigned long removed, \ 118362306a36Sopenharmony_ci unsigned long remaining \ 118462306a36Sopenharmony_ci ), \ 118562306a36Sopenharmony_ci TP_ARGS(removed, remaining)) 118662306a36Sopenharmony_ci 118762306a36Sopenharmony_ciDEFINE_NFSD_FILE_LRUWALK_EVENT(nfsd_file_gc_removed); 118862306a36Sopenharmony_ciDEFINE_NFSD_FILE_LRUWALK_EVENT(nfsd_file_shrinker_removed); 118962306a36Sopenharmony_ci 119062306a36Sopenharmony_ciTRACE_EVENT(nfsd_file_close, 119162306a36Sopenharmony_ci TP_PROTO( 119262306a36Sopenharmony_ci const struct inode *inode 119362306a36Sopenharmony_ci ), 119462306a36Sopenharmony_ci TP_ARGS(inode), 119562306a36Sopenharmony_ci TP_STRUCT__entry( 119662306a36Sopenharmony_ci __field(const void *, inode) 119762306a36Sopenharmony_ci ), 119862306a36Sopenharmony_ci TP_fast_assign( 119962306a36Sopenharmony_ci __entry->inode = inode; 120062306a36Sopenharmony_ci ), 120162306a36Sopenharmony_ci TP_printk("inode=%p", 120262306a36Sopenharmony_ci __entry->inode 120362306a36Sopenharmony_ci ) 120462306a36Sopenharmony_ci); 120562306a36Sopenharmony_ci 120662306a36Sopenharmony_ci#include "cache.h" 120762306a36Sopenharmony_ci 120862306a36Sopenharmony_ciTRACE_DEFINE_ENUM(RC_DROPIT); 120962306a36Sopenharmony_ciTRACE_DEFINE_ENUM(RC_REPLY); 121062306a36Sopenharmony_ciTRACE_DEFINE_ENUM(RC_DOIT); 121162306a36Sopenharmony_ci 121262306a36Sopenharmony_ci#define show_drc_retval(x) \ 121362306a36Sopenharmony_ci __print_symbolic(x, \ 121462306a36Sopenharmony_ci { RC_DROPIT, "DROPIT" }, \ 121562306a36Sopenharmony_ci { RC_REPLY, "REPLY" }, \ 121662306a36Sopenharmony_ci { RC_DOIT, "DOIT" }) 121762306a36Sopenharmony_ci 121862306a36Sopenharmony_ciTRACE_EVENT(nfsd_drc_found, 121962306a36Sopenharmony_ci TP_PROTO( 122062306a36Sopenharmony_ci const struct nfsd_net *nn, 122162306a36Sopenharmony_ci const struct svc_rqst *rqstp, 122262306a36Sopenharmony_ci int result 122362306a36Sopenharmony_ci ), 122462306a36Sopenharmony_ci TP_ARGS(nn, rqstp, result), 122562306a36Sopenharmony_ci TP_STRUCT__entry( 122662306a36Sopenharmony_ci __field(unsigned long long, boot_time) 122762306a36Sopenharmony_ci __field(unsigned long, result) 122862306a36Sopenharmony_ci __field(u32, xid) 122962306a36Sopenharmony_ci ), 123062306a36Sopenharmony_ci TP_fast_assign( 123162306a36Sopenharmony_ci __entry->boot_time = nn->boot_time; 123262306a36Sopenharmony_ci __entry->result = result; 123362306a36Sopenharmony_ci __entry->xid = be32_to_cpu(rqstp->rq_xid); 123462306a36Sopenharmony_ci ), 123562306a36Sopenharmony_ci TP_printk("boot_time=%16llx xid=0x%08x result=%s", 123662306a36Sopenharmony_ci __entry->boot_time, __entry->xid, 123762306a36Sopenharmony_ci show_drc_retval(__entry->result)) 123862306a36Sopenharmony_ci 123962306a36Sopenharmony_ci); 124062306a36Sopenharmony_ci 124162306a36Sopenharmony_ciTRACE_EVENT(nfsd_drc_mismatch, 124262306a36Sopenharmony_ci TP_PROTO( 124362306a36Sopenharmony_ci const struct nfsd_net *nn, 124462306a36Sopenharmony_ci const struct nfsd_cacherep *key, 124562306a36Sopenharmony_ci const struct nfsd_cacherep *rp 124662306a36Sopenharmony_ci ), 124762306a36Sopenharmony_ci TP_ARGS(nn, key, rp), 124862306a36Sopenharmony_ci TP_STRUCT__entry( 124962306a36Sopenharmony_ci __field(unsigned long long, boot_time) 125062306a36Sopenharmony_ci __field(u32, xid) 125162306a36Sopenharmony_ci __field(u32, cached) 125262306a36Sopenharmony_ci __field(u32, ingress) 125362306a36Sopenharmony_ci ), 125462306a36Sopenharmony_ci TP_fast_assign( 125562306a36Sopenharmony_ci __entry->boot_time = nn->boot_time; 125662306a36Sopenharmony_ci __entry->xid = be32_to_cpu(key->c_key.k_xid); 125762306a36Sopenharmony_ci __entry->cached = (__force u32)key->c_key.k_csum; 125862306a36Sopenharmony_ci __entry->ingress = (__force u32)rp->c_key.k_csum; 125962306a36Sopenharmony_ci ), 126062306a36Sopenharmony_ci TP_printk("boot_time=%16llx xid=0x%08x cached-csum=0x%08x ingress-csum=0x%08x", 126162306a36Sopenharmony_ci __entry->boot_time, __entry->xid, __entry->cached, 126262306a36Sopenharmony_ci __entry->ingress) 126362306a36Sopenharmony_ci); 126462306a36Sopenharmony_ci 126562306a36Sopenharmony_ciTRACE_EVENT_CONDITION(nfsd_drc_gc, 126662306a36Sopenharmony_ci TP_PROTO( 126762306a36Sopenharmony_ci const struct nfsd_net *nn, 126862306a36Sopenharmony_ci unsigned long freed 126962306a36Sopenharmony_ci ), 127062306a36Sopenharmony_ci TP_ARGS(nn, freed), 127162306a36Sopenharmony_ci TP_CONDITION(freed > 0), 127262306a36Sopenharmony_ci TP_STRUCT__entry( 127362306a36Sopenharmony_ci __field(unsigned long long, boot_time) 127462306a36Sopenharmony_ci __field(unsigned long, freed) 127562306a36Sopenharmony_ci __field(int, total) 127662306a36Sopenharmony_ci ), 127762306a36Sopenharmony_ci TP_fast_assign( 127862306a36Sopenharmony_ci __entry->boot_time = nn->boot_time; 127962306a36Sopenharmony_ci __entry->freed = freed; 128062306a36Sopenharmony_ci __entry->total = atomic_read(&nn->num_drc_entries); 128162306a36Sopenharmony_ci ), 128262306a36Sopenharmony_ci TP_printk("boot_time=%16llx total=%d freed=%lu", 128362306a36Sopenharmony_ci __entry->boot_time, __entry->total, __entry->freed 128462306a36Sopenharmony_ci ) 128562306a36Sopenharmony_ci); 128662306a36Sopenharmony_ci 128762306a36Sopenharmony_ciTRACE_EVENT(nfsd_cb_args, 128862306a36Sopenharmony_ci TP_PROTO( 128962306a36Sopenharmony_ci const struct nfs4_client *clp, 129062306a36Sopenharmony_ci const struct nfs4_cb_conn *conn 129162306a36Sopenharmony_ci ), 129262306a36Sopenharmony_ci TP_ARGS(clp, conn), 129362306a36Sopenharmony_ci TP_STRUCT__entry( 129462306a36Sopenharmony_ci __field(u32, cl_boot) 129562306a36Sopenharmony_ci __field(u32, cl_id) 129662306a36Sopenharmony_ci __field(u32, prog) 129762306a36Sopenharmony_ci __field(u32, ident) 129862306a36Sopenharmony_ci __sockaddr(addr, conn->cb_addrlen) 129962306a36Sopenharmony_ci ), 130062306a36Sopenharmony_ci TP_fast_assign( 130162306a36Sopenharmony_ci __entry->cl_boot = clp->cl_clientid.cl_boot; 130262306a36Sopenharmony_ci __entry->cl_id = clp->cl_clientid.cl_id; 130362306a36Sopenharmony_ci __entry->prog = conn->cb_prog; 130462306a36Sopenharmony_ci __entry->ident = conn->cb_ident; 130562306a36Sopenharmony_ci __assign_sockaddr(addr, &conn->cb_addr, conn->cb_addrlen); 130662306a36Sopenharmony_ci ), 130762306a36Sopenharmony_ci TP_printk("addr=%pISpc client %08x:%08x prog=%u ident=%u", 130862306a36Sopenharmony_ci __get_sockaddr(addr), __entry->cl_boot, __entry->cl_id, 130962306a36Sopenharmony_ci __entry->prog, __entry->ident) 131062306a36Sopenharmony_ci); 131162306a36Sopenharmony_ci 131262306a36Sopenharmony_ciTRACE_EVENT(nfsd_cb_nodelegs, 131362306a36Sopenharmony_ci TP_PROTO(const struct nfs4_client *clp), 131462306a36Sopenharmony_ci TP_ARGS(clp), 131562306a36Sopenharmony_ci TP_STRUCT__entry( 131662306a36Sopenharmony_ci __field(u32, cl_boot) 131762306a36Sopenharmony_ci __field(u32, cl_id) 131862306a36Sopenharmony_ci ), 131962306a36Sopenharmony_ci TP_fast_assign( 132062306a36Sopenharmony_ci __entry->cl_boot = clp->cl_clientid.cl_boot; 132162306a36Sopenharmony_ci __entry->cl_id = clp->cl_clientid.cl_id; 132262306a36Sopenharmony_ci ), 132362306a36Sopenharmony_ci TP_printk("client %08x:%08x", __entry->cl_boot, __entry->cl_id) 132462306a36Sopenharmony_ci) 132562306a36Sopenharmony_ci 132662306a36Sopenharmony_ci#define show_cb_state(val) \ 132762306a36Sopenharmony_ci __print_symbolic(val, \ 132862306a36Sopenharmony_ci { NFSD4_CB_UP, "UP" }, \ 132962306a36Sopenharmony_ci { NFSD4_CB_UNKNOWN, "UNKNOWN" }, \ 133062306a36Sopenharmony_ci { NFSD4_CB_DOWN, "DOWN" }, \ 133162306a36Sopenharmony_ci { NFSD4_CB_FAULT, "FAULT"}) 133262306a36Sopenharmony_ci 133362306a36Sopenharmony_ciDECLARE_EVENT_CLASS(nfsd_cb_class, 133462306a36Sopenharmony_ci TP_PROTO(const struct nfs4_client *clp), 133562306a36Sopenharmony_ci TP_ARGS(clp), 133662306a36Sopenharmony_ci TP_STRUCT__entry( 133762306a36Sopenharmony_ci __field(unsigned long, state) 133862306a36Sopenharmony_ci __field(u32, cl_boot) 133962306a36Sopenharmony_ci __field(u32, cl_id) 134062306a36Sopenharmony_ci __sockaddr(addr, clp->cl_cb_conn.cb_addrlen) 134162306a36Sopenharmony_ci ), 134262306a36Sopenharmony_ci TP_fast_assign( 134362306a36Sopenharmony_ci __entry->state = clp->cl_cb_state; 134462306a36Sopenharmony_ci __entry->cl_boot = clp->cl_clientid.cl_boot; 134562306a36Sopenharmony_ci __entry->cl_id = clp->cl_clientid.cl_id; 134662306a36Sopenharmony_ci __assign_sockaddr(addr, &clp->cl_cb_conn.cb_addr, 134762306a36Sopenharmony_ci clp->cl_cb_conn.cb_addrlen) 134862306a36Sopenharmony_ci ), 134962306a36Sopenharmony_ci TP_printk("addr=%pISpc client %08x:%08x state=%s", 135062306a36Sopenharmony_ci __get_sockaddr(addr), __entry->cl_boot, __entry->cl_id, 135162306a36Sopenharmony_ci show_cb_state(__entry->state)) 135262306a36Sopenharmony_ci); 135362306a36Sopenharmony_ci 135462306a36Sopenharmony_ci#define DEFINE_NFSD_CB_EVENT(name) \ 135562306a36Sopenharmony_ciDEFINE_EVENT(nfsd_cb_class, nfsd_cb_##name, \ 135662306a36Sopenharmony_ci TP_PROTO(const struct nfs4_client *clp), \ 135762306a36Sopenharmony_ci TP_ARGS(clp)) 135862306a36Sopenharmony_ci 135962306a36Sopenharmony_ciDEFINE_NFSD_CB_EVENT(state); 136062306a36Sopenharmony_ciDEFINE_NFSD_CB_EVENT(probe); 136162306a36Sopenharmony_ciDEFINE_NFSD_CB_EVENT(lost); 136262306a36Sopenharmony_ciDEFINE_NFSD_CB_EVENT(shutdown); 136362306a36Sopenharmony_ci 136462306a36Sopenharmony_ciTRACE_DEFINE_ENUM(RPC_AUTH_NULL); 136562306a36Sopenharmony_ciTRACE_DEFINE_ENUM(RPC_AUTH_UNIX); 136662306a36Sopenharmony_ciTRACE_DEFINE_ENUM(RPC_AUTH_GSS); 136762306a36Sopenharmony_ciTRACE_DEFINE_ENUM(RPC_AUTH_GSS_KRB5); 136862306a36Sopenharmony_ciTRACE_DEFINE_ENUM(RPC_AUTH_GSS_KRB5I); 136962306a36Sopenharmony_ciTRACE_DEFINE_ENUM(RPC_AUTH_GSS_KRB5P); 137062306a36Sopenharmony_ci 137162306a36Sopenharmony_ci#define show_nfsd_authflavor(val) \ 137262306a36Sopenharmony_ci __print_symbolic(val, \ 137362306a36Sopenharmony_ci { RPC_AUTH_NULL, "none" }, \ 137462306a36Sopenharmony_ci { RPC_AUTH_UNIX, "sys" }, \ 137562306a36Sopenharmony_ci { RPC_AUTH_GSS, "gss" }, \ 137662306a36Sopenharmony_ci { RPC_AUTH_GSS_KRB5, "krb5" }, \ 137762306a36Sopenharmony_ci { RPC_AUTH_GSS_KRB5I, "krb5i" }, \ 137862306a36Sopenharmony_ci { RPC_AUTH_GSS_KRB5P, "krb5p" }) 137962306a36Sopenharmony_ci 138062306a36Sopenharmony_ciTRACE_EVENT(nfsd_cb_setup, 138162306a36Sopenharmony_ci TP_PROTO(const struct nfs4_client *clp, 138262306a36Sopenharmony_ci const char *netid, 138362306a36Sopenharmony_ci rpc_authflavor_t authflavor 138462306a36Sopenharmony_ci ), 138562306a36Sopenharmony_ci TP_ARGS(clp, netid, authflavor), 138662306a36Sopenharmony_ci TP_STRUCT__entry( 138762306a36Sopenharmony_ci __field(u32, cl_boot) 138862306a36Sopenharmony_ci __field(u32, cl_id) 138962306a36Sopenharmony_ci __field(unsigned long, authflavor) 139062306a36Sopenharmony_ci __sockaddr(addr, clp->cl_cb_conn.cb_addrlen) 139162306a36Sopenharmony_ci __string(netid, netid) 139262306a36Sopenharmony_ci ), 139362306a36Sopenharmony_ci TP_fast_assign( 139462306a36Sopenharmony_ci __entry->cl_boot = clp->cl_clientid.cl_boot; 139562306a36Sopenharmony_ci __entry->cl_id = clp->cl_clientid.cl_id; 139662306a36Sopenharmony_ci __assign_str(netid, netid); 139762306a36Sopenharmony_ci __entry->authflavor = authflavor; 139862306a36Sopenharmony_ci __assign_sockaddr(addr, &clp->cl_cb_conn.cb_addr, 139962306a36Sopenharmony_ci clp->cl_cb_conn.cb_addrlen) 140062306a36Sopenharmony_ci ), 140162306a36Sopenharmony_ci TP_printk("addr=%pISpc client %08x:%08x proto=%s flavor=%s", 140262306a36Sopenharmony_ci __get_sockaddr(addr), __entry->cl_boot, __entry->cl_id, 140362306a36Sopenharmony_ci __get_str(netid), show_nfsd_authflavor(__entry->authflavor)) 140462306a36Sopenharmony_ci); 140562306a36Sopenharmony_ci 140662306a36Sopenharmony_ciTRACE_EVENT(nfsd_cb_setup_err, 140762306a36Sopenharmony_ci TP_PROTO( 140862306a36Sopenharmony_ci const struct nfs4_client *clp, 140962306a36Sopenharmony_ci long error 141062306a36Sopenharmony_ci ), 141162306a36Sopenharmony_ci TP_ARGS(clp, error), 141262306a36Sopenharmony_ci TP_STRUCT__entry( 141362306a36Sopenharmony_ci __field(long, error) 141462306a36Sopenharmony_ci __field(u32, cl_boot) 141562306a36Sopenharmony_ci __field(u32, cl_id) 141662306a36Sopenharmony_ci __sockaddr(addr, clp->cl_cb_conn.cb_addrlen) 141762306a36Sopenharmony_ci ), 141862306a36Sopenharmony_ci TP_fast_assign( 141962306a36Sopenharmony_ci __entry->error = error; 142062306a36Sopenharmony_ci __entry->cl_boot = clp->cl_clientid.cl_boot; 142162306a36Sopenharmony_ci __entry->cl_id = clp->cl_clientid.cl_id; 142262306a36Sopenharmony_ci __assign_sockaddr(addr, &clp->cl_cb_conn.cb_addr, 142362306a36Sopenharmony_ci clp->cl_cb_conn.cb_addrlen) 142462306a36Sopenharmony_ci ), 142562306a36Sopenharmony_ci TP_printk("addr=%pISpc client %08x:%08x error=%ld", 142662306a36Sopenharmony_ci __get_sockaddr(addr), __entry->cl_boot, __entry->cl_id, 142762306a36Sopenharmony_ci __entry->error) 142862306a36Sopenharmony_ci); 142962306a36Sopenharmony_ci 143062306a36Sopenharmony_ciTRACE_EVENT_CONDITION(nfsd_cb_recall, 143162306a36Sopenharmony_ci TP_PROTO( 143262306a36Sopenharmony_ci const struct nfs4_stid *stid 143362306a36Sopenharmony_ci ), 143462306a36Sopenharmony_ci TP_ARGS(stid), 143562306a36Sopenharmony_ci TP_CONDITION(stid->sc_client), 143662306a36Sopenharmony_ci TP_STRUCT__entry( 143762306a36Sopenharmony_ci __field(u32, cl_boot) 143862306a36Sopenharmony_ci __field(u32, cl_id) 143962306a36Sopenharmony_ci __field(u32, si_id) 144062306a36Sopenharmony_ci __field(u32, si_generation) 144162306a36Sopenharmony_ci __sockaddr(addr, stid->sc_client->cl_cb_conn.cb_addrlen) 144262306a36Sopenharmony_ci ), 144362306a36Sopenharmony_ci TP_fast_assign( 144462306a36Sopenharmony_ci const stateid_t *stp = &stid->sc_stateid; 144562306a36Sopenharmony_ci const struct nfs4_client *clp = stid->sc_client; 144662306a36Sopenharmony_ci 144762306a36Sopenharmony_ci __entry->cl_boot = stp->si_opaque.so_clid.cl_boot; 144862306a36Sopenharmony_ci __entry->cl_id = stp->si_opaque.so_clid.cl_id; 144962306a36Sopenharmony_ci __entry->si_id = stp->si_opaque.so_id; 145062306a36Sopenharmony_ci __entry->si_generation = stp->si_generation; 145162306a36Sopenharmony_ci __assign_sockaddr(addr, &clp->cl_cb_conn.cb_addr, 145262306a36Sopenharmony_ci clp->cl_cb_conn.cb_addrlen) 145362306a36Sopenharmony_ci ), 145462306a36Sopenharmony_ci TP_printk("addr=%pISpc client %08x:%08x stateid %08x:%08x", 145562306a36Sopenharmony_ci __get_sockaddr(addr), __entry->cl_boot, __entry->cl_id, 145662306a36Sopenharmony_ci __entry->si_id, __entry->si_generation) 145762306a36Sopenharmony_ci); 145862306a36Sopenharmony_ci 145962306a36Sopenharmony_ciTRACE_EVENT(nfsd_cb_notify_lock, 146062306a36Sopenharmony_ci TP_PROTO( 146162306a36Sopenharmony_ci const struct nfs4_lockowner *lo, 146262306a36Sopenharmony_ci const struct nfsd4_blocked_lock *nbl 146362306a36Sopenharmony_ci ), 146462306a36Sopenharmony_ci TP_ARGS(lo, nbl), 146562306a36Sopenharmony_ci TP_STRUCT__entry( 146662306a36Sopenharmony_ci __field(u32, cl_boot) 146762306a36Sopenharmony_ci __field(u32, cl_id) 146862306a36Sopenharmony_ci __field(u32, fh_hash) 146962306a36Sopenharmony_ci __sockaddr(addr, lo->lo_owner.so_client->cl_cb_conn.cb_addrlen) 147062306a36Sopenharmony_ci ), 147162306a36Sopenharmony_ci TP_fast_assign( 147262306a36Sopenharmony_ci const struct nfs4_client *clp = lo->lo_owner.so_client; 147362306a36Sopenharmony_ci 147462306a36Sopenharmony_ci __entry->cl_boot = clp->cl_clientid.cl_boot; 147562306a36Sopenharmony_ci __entry->cl_id = clp->cl_clientid.cl_id; 147662306a36Sopenharmony_ci __entry->fh_hash = knfsd_fh_hash(&nbl->nbl_fh); 147762306a36Sopenharmony_ci __assign_sockaddr(addr, &clp->cl_cb_conn.cb_addr, 147862306a36Sopenharmony_ci clp->cl_cb_conn.cb_addrlen) 147962306a36Sopenharmony_ci ), 148062306a36Sopenharmony_ci TP_printk("addr=%pISpc client %08x:%08x fh_hash=0x%08x", 148162306a36Sopenharmony_ci __get_sockaddr(addr), __entry->cl_boot, __entry->cl_id, 148262306a36Sopenharmony_ci __entry->fh_hash) 148362306a36Sopenharmony_ci); 148462306a36Sopenharmony_ci 148562306a36Sopenharmony_ciTRACE_EVENT(nfsd_cb_offload, 148662306a36Sopenharmony_ci TP_PROTO( 148762306a36Sopenharmony_ci const struct nfs4_client *clp, 148862306a36Sopenharmony_ci const stateid_t *stp, 148962306a36Sopenharmony_ci const struct knfsd_fh *fh, 149062306a36Sopenharmony_ci u64 count, 149162306a36Sopenharmony_ci __be32 status 149262306a36Sopenharmony_ci ), 149362306a36Sopenharmony_ci TP_ARGS(clp, stp, fh, count, status), 149462306a36Sopenharmony_ci TP_STRUCT__entry( 149562306a36Sopenharmony_ci __field(u32, cl_boot) 149662306a36Sopenharmony_ci __field(u32, cl_id) 149762306a36Sopenharmony_ci __field(u32, si_id) 149862306a36Sopenharmony_ci __field(u32, si_generation) 149962306a36Sopenharmony_ci __field(u32, fh_hash) 150062306a36Sopenharmony_ci __field(int, status) 150162306a36Sopenharmony_ci __field(u64, count) 150262306a36Sopenharmony_ci __sockaddr(addr, clp->cl_cb_conn.cb_addrlen) 150362306a36Sopenharmony_ci ), 150462306a36Sopenharmony_ci TP_fast_assign( 150562306a36Sopenharmony_ci __entry->cl_boot = stp->si_opaque.so_clid.cl_boot; 150662306a36Sopenharmony_ci __entry->cl_id = stp->si_opaque.so_clid.cl_id; 150762306a36Sopenharmony_ci __entry->si_id = stp->si_opaque.so_id; 150862306a36Sopenharmony_ci __entry->si_generation = stp->si_generation; 150962306a36Sopenharmony_ci __entry->fh_hash = knfsd_fh_hash(fh); 151062306a36Sopenharmony_ci __entry->status = be32_to_cpu(status); 151162306a36Sopenharmony_ci __entry->count = count; 151262306a36Sopenharmony_ci __assign_sockaddr(addr, &clp->cl_cb_conn.cb_addr, 151362306a36Sopenharmony_ci clp->cl_cb_conn.cb_addrlen) 151462306a36Sopenharmony_ci ), 151562306a36Sopenharmony_ci TP_printk("addr=%pISpc client %08x:%08x stateid %08x:%08x fh_hash=0x%08x count=%llu status=%d", 151662306a36Sopenharmony_ci __get_sockaddr(addr), __entry->cl_boot, __entry->cl_id, 151762306a36Sopenharmony_ci __entry->si_id, __entry->si_generation, 151862306a36Sopenharmony_ci __entry->fh_hash, __entry->count, __entry->status) 151962306a36Sopenharmony_ci); 152062306a36Sopenharmony_ci 152162306a36Sopenharmony_ciTRACE_EVENT(nfsd_cb_recall_any, 152262306a36Sopenharmony_ci TP_PROTO( 152362306a36Sopenharmony_ci const struct nfsd4_cb_recall_any *ra 152462306a36Sopenharmony_ci ), 152562306a36Sopenharmony_ci TP_ARGS(ra), 152662306a36Sopenharmony_ci TP_STRUCT__entry( 152762306a36Sopenharmony_ci __field(u32, cl_boot) 152862306a36Sopenharmony_ci __field(u32, cl_id) 152962306a36Sopenharmony_ci __field(u32, keep) 153062306a36Sopenharmony_ci __field(unsigned long, bmval0) 153162306a36Sopenharmony_ci __sockaddr(addr, ra->ra_cb.cb_clp->cl_cb_conn.cb_addrlen) 153262306a36Sopenharmony_ci ), 153362306a36Sopenharmony_ci TP_fast_assign( 153462306a36Sopenharmony_ci __entry->cl_boot = ra->ra_cb.cb_clp->cl_clientid.cl_boot; 153562306a36Sopenharmony_ci __entry->cl_id = ra->ra_cb.cb_clp->cl_clientid.cl_id; 153662306a36Sopenharmony_ci __entry->keep = ra->ra_keep; 153762306a36Sopenharmony_ci __entry->bmval0 = ra->ra_bmval[0]; 153862306a36Sopenharmony_ci __assign_sockaddr(addr, &ra->ra_cb.cb_clp->cl_addr, 153962306a36Sopenharmony_ci ra->ra_cb.cb_clp->cl_cb_conn.cb_addrlen); 154062306a36Sopenharmony_ci ), 154162306a36Sopenharmony_ci TP_printk("addr=%pISpc client %08x:%08x keep=%u bmval0=%s", 154262306a36Sopenharmony_ci __get_sockaddr(addr), __entry->cl_boot, __entry->cl_id, 154362306a36Sopenharmony_ci __entry->keep, show_rca_mask(__entry->bmval0) 154462306a36Sopenharmony_ci ) 154562306a36Sopenharmony_ci); 154662306a36Sopenharmony_ci 154762306a36Sopenharmony_ciDECLARE_EVENT_CLASS(nfsd_cb_done_class, 154862306a36Sopenharmony_ci TP_PROTO( 154962306a36Sopenharmony_ci const stateid_t *stp, 155062306a36Sopenharmony_ci const struct rpc_task *task 155162306a36Sopenharmony_ci ), 155262306a36Sopenharmony_ci TP_ARGS(stp, task), 155362306a36Sopenharmony_ci TP_STRUCT__entry( 155462306a36Sopenharmony_ci __field(u32, cl_boot) 155562306a36Sopenharmony_ci __field(u32, cl_id) 155662306a36Sopenharmony_ci __field(u32, si_id) 155762306a36Sopenharmony_ci __field(u32, si_generation) 155862306a36Sopenharmony_ci __field(int, status) 155962306a36Sopenharmony_ci ), 156062306a36Sopenharmony_ci TP_fast_assign( 156162306a36Sopenharmony_ci __entry->cl_boot = stp->si_opaque.so_clid.cl_boot; 156262306a36Sopenharmony_ci __entry->cl_id = stp->si_opaque.so_clid.cl_id; 156362306a36Sopenharmony_ci __entry->si_id = stp->si_opaque.so_id; 156462306a36Sopenharmony_ci __entry->si_generation = stp->si_generation; 156562306a36Sopenharmony_ci __entry->status = task->tk_status; 156662306a36Sopenharmony_ci ), 156762306a36Sopenharmony_ci TP_printk("client %08x:%08x stateid %08x:%08x status=%d", 156862306a36Sopenharmony_ci __entry->cl_boot, __entry->cl_id, __entry->si_id, 156962306a36Sopenharmony_ci __entry->si_generation, __entry->status 157062306a36Sopenharmony_ci ) 157162306a36Sopenharmony_ci); 157262306a36Sopenharmony_ci 157362306a36Sopenharmony_ci#define DEFINE_NFSD_CB_DONE_EVENT(name) \ 157462306a36Sopenharmony_ciDEFINE_EVENT(nfsd_cb_done_class, name, \ 157562306a36Sopenharmony_ci TP_PROTO( \ 157662306a36Sopenharmony_ci const stateid_t *stp, \ 157762306a36Sopenharmony_ci const struct rpc_task *task \ 157862306a36Sopenharmony_ci ), \ 157962306a36Sopenharmony_ci TP_ARGS(stp, task)) 158062306a36Sopenharmony_ci 158162306a36Sopenharmony_ciDEFINE_NFSD_CB_DONE_EVENT(nfsd_cb_recall_done); 158262306a36Sopenharmony_ciDEFINE_NFSD_CB_DONE_EVENT(nfsd_cb_notify_lock_done); 158362306a36Sopenharmony_ciDEFINE_NFSD_CB_DONE_EVENT(nfsd_cb_layout_done); 158462306a36Sopenharmony_ciDEFINE_NFSD_CB_DONE_EVENT(nfsd_cb_offload_done); 158562306a36Sopenharmony_ci 158662306a36Sopenharmony_ciTRACE_EVENT(nfsd_cb_recall_any_done, 158762306a36Sopenharmony_ci TP_PROTO( 158862306a36Sopenharmony_ci const struct nfsd4_callback *cb, 158962306a36Sopenharmony_ci const struct rpc_task *task 159062306a36Sopenharmony_ci ), 159162306a36Sopenharmony_ci TP_ARGS(cb, task), 159262306a36Sopenharmony_ci TP_STRUCT__entry( 159362306a36Sopenharmony_ci __field(u32, cl_boot) 159462306a36Sopenharmony_ci __field(u32, cl_id) 159562306a36Sopenharmony_ci __field(int, status) 159662306a36Sopenharmony_ci ), 159762306a36Sopenharmony_ci TP_fast_assign( 159862306a36Sopenharmony_ci __entry->status = task->tk_status; 159962306a36Sopenharmony_ci __entry->cl_boot = cb->cb_clp->cl_clientid.cl_boot; 160062306a36Sopenharmony_ci __entry->cl_id = cb->cb_clp->cl_clientid.cl_id; 160162306a36Sopenharmony_ci ), 160262306a36Sopenharmony_ci TP_printk("client %08x:%08x status=%d", 160362306a36Sopenharmony_ci __entry->cl_boot, __entry->cl_id, __entry->status 160462306a36Sopenharmony_ci ) 160562306a36Sopenharmony_ci); 160662306a36Sopenharmony_ci 160762306a36Sopenharmony_ciTRACE_EVENT(nfsd_ctl_unlock_ip, 160862306a36Sopenharmony_ci TP_PROTO( 160962306a36Sopenharmony_ci const struct net *net, 161062306a36Sopenharmony_ci const char *address 161162306a36Sopenharmony_ci ), 161262306a36Sopenharmony_ci TP_ARGS(net, address), 161362306a36Sopenharmony_ci TP_STRUCT__entry( 161462306a36Sopenharmony_ci __field(unsigned int, netns_ino) 161562306a36Sopenharmony_ci __string(address, address) 161662306a36Sopenharmony_ci ), 161762306a36Sopenharmony_ci TP_fast_assign( 161862306a36Sopenharmony_ci __entry->netns_ino = net->ns.inum; 161962306a36Sopenharmony_ci __assign_str(address, address); 162062306a36Sopenharmony_ci ), 162162306a36Sopenharmony_ci TP_printk("address=%s", 162262306a36Sopenharmony_ci __get_str(address) 162362306a36Sopenharmony_ci ) 162462306a36Sopenharmony_ci); 162562306a36Sopenharmony_ci 162662306a36Sopenharmony_ciTRACE_EVENT(nfsd_ctl_unlock_fs, 162762306a36Sopenharmony_ci TP_PROTO( 162862306a36Sopenharmony_ci const struct net *net, 162962306a36Sopenharmony_ci const char *path 163062306a36Sopenharmony_ci ), 163162306a36Sopenharmony_ci TP_ARGS(net, path), 163262306a36Sopenharmony_ci TP_STRUCT__entry( 163362306a36Sopenharmony_ci __field(unsigned int, netns_ino) 163462306a36Sopenharmony_ci __string(path, path) 163562306a36Sopenharmony_ci ), 163662306a36Sopenharmony_ci TP_fast_assign( 163762306a36Sopenharmony_ci __entry->netns_ino = net->ns.inum; 163862306a36Sopenharmony_ci __assign_str(path, path); 163962306a36Sopenharmony_ci ), 164062306a36Sopenharmony_ci TP_printk("path=%s", 164162306a36Sopenharmony_ci __get_str(path) 164262306a36Sopenharmony_ci ) 164362306a36Sopenharmony_ci); 164462306a36Sopenharmony_ci 164562306a36Sopenharmony_ciTRACE_EVENT(nfsd_ctl_filehandle, 164662306a36Sopenharmony_ci TP_PROTO( 164762306a36Sopenharmony_ci const struct net *net, 164862306a36Sopenharmony_ci const char *domain, 164962306a36Sopenharmony_ci const char *path, 165062306a36Sopenharmony_ci int maxsize 165162306a36Sopenharmony_ci ), 165262306a36Sopenharmony_ci TP_ARGS(net, domain, path, maxsize), 165362306a36Sopenharmony_ci TP_STRUCT__entry( 165462306a36Sopenharmony_ci __field(unsigned int, netns_ino) 165562306a36Sopenharmony_ci __field(int, maxsize) 165662306a36Sopenharmony_ci __string(domain, domain) 165762306a36Sopenharmony_ci __string(path, path) 165862306a36Sopenharmony_ci ), 165962306a36Sopenharmony_ci TP_fast_assign( 166062306a36Sopenharmony_ci __entry->netns_ino = net->ns.inum; 166162306a36Sopenharmony_ci __entry->maxsize = maxsize; 166262306a36Sopenharmony_ci __assign_str(domain, domain); 166362306a36Sopenharmony_ci __assign_str(path, path); 166462306a36Sopenharmony_ci ), 166562306a36Sopenharmony_ci TP_printk("domain=%s path=%s maxsize=%d", 166662306a36Sopenharmony_ci __get_str(domain), __get_str(path), __entry->maxsize 166762306a36Sopenharmony_ci ) 166862306a36Sopenharmony_ci); 166962306a36Sopenharmony_ci 167062306a36Sopenharmony_ciTRACE_EVENT(nfsd_ctl_threads, 167162306a36Sopenharmony_ci TP_PROTO( 167262306a36Sopenharmony_ci const struct net *net, 167362306a36Sopenharmony_ci int newthreads 167462306a36Sopenharmony_ci ), 167562306a36Sopenharmony_ci TP_ARGS(net, newthreads), 167662306a36Sopenharmony_ci TP_STRUCT__entry( 167762306a36Sopenharmony_ci __field(unsigned int, netns_ino) 167862306a36Sopenharmony_ci __field(int, newthreads) 167962306a36Sopenharmony_ci ), 168062306a36Sopenharmony_ci TP_fast_assign( 168162306a36Sopenharmony_ci __entry->netns_ino = net->ns.inum; 168262306a36Sopenharmony_ci __entry->newthreads = newthreads; 168362306a36Sopenharmony_ci ), 168462306a36Sopenharmony_ci TP_printk("newthreads=%d", 168562306a36Sopenharmony_ci __entry->newthreads 168662306a36Sopenharmony_ci ) 168762306a36Sopenharmony_ci); 168862306a36Sopenharmony_ci 168962306a36Sopenharmony_ciTRACE_EVENT(nfsd_ctl_pool_threads, 169062306a36Sopenharmony_ci TP_PROTO( 169162306a36Sopenharmony_ci const struct net *net, 169262306a36Sopenharmony_ci int pool, 169362306a36Sopenharmony_ci int nrthreads 169462306a36Sopenharmony_ci ), 169562306a36Sopenharmony_ci TP_ARGS(net, pool, nrthreads), 169662306a36Sopenharmony_ci TP_STRUCT__entry( 169762306a36Sopenharmony_ci __field(unsigned int, netns_ino) 169862306a36Sopenharmony_ci __field(int, pool) 169962306a36Sopenharmony_ci __field(int, nrthreads) 170062306a36Sopenharmony_ci ), 170162306a36Sopenharmony_ci TP_fast_assign( 170262306a36Sopenharmony_ci __entry->netns_ino = net->ns.inum; 170362306a36Sopenharmony_ci __entry->pool = pool; 170462306a36Sopenharmony_ci __entry->nrthreads = nrthreads; 170562306a36Sopenharmony_ci ), 170662306a36Sopenharmony_ci TP_printk("pool=%d nrthreads=%d", 170762306a36Sopenharmony_ci __entry->pool, __entry->nrthreads 170862306a36Sopenharmony_ci ) 170962306a36Sopenharmony_ci); 171062306a36Sopenharmony_ci 171162306a36Sopenharmony_ciTRACE_EVENT(nfsd_ctl_version, 171262306a36Sopenharmony_ci TP_PROTO( 171362306a36Sopenharmony_ci const struct net *net, 171462306a36Sopenharmony_ci const char *mesg 171562306a36Sopenharmony_ci ), 171662306a36Sopenharmony_ci TP_ARGS(net, mesg), 171762306a36Sopenharmony_ci TP_STRUCT__entry( 171862306a36Sopenharmony_ci __field(unsigned int, netns_ino) 171962306a36Sopenharmony_ci __string(mesg, mesg) 172062306a36Sopenharmony_ci ), 172162306a36Sopenharmony_ci TP_fast_assign( 172262306a36Sopenharmony_ci __entry->netns_ino = net->ns.inum; 172362306a36Sopenharmony_ci __assign_str(mesg, mesg); 172462306a36Sopenharmony_ci ), 172562306a36Sopenharmony_ci TP_printk("%s", 172662306a36Sopenharmony_ci __get_str(mesg) 172762306a36Sopenharmony_ci ) 172862306a36Sopenharmony_ci); 172962306a36Sopenharmony_ci 173062306a36Sopenharmony_ciTRACE_EVENT(nfsd_ctl_ports_addfd, 173162306a36Sopenharmony_ci TP_PROTO( 173262306a36Sopenharmony_ci const struct net *net, 173362306a36Sopenharmony_ci int fd 173462306a36Sopenharmony_ci ), 173562306a36Sopenharmony_ci TP_ARGS(net, fd), 173662306a36Sopenharmony_ci TP_STRUCT__entry( 173762306a36Sopenharmony_ci __field(unsigned int, netns_ino) 173862306a36Sopenharmony_ci __field(int, fd) 173962306a36Sopenharmony_ci ), 174062306a36Sopenharmony_ci TP_fast_assign( 174162306a36Sopenharmony_ci __entry->netns_ino = net->ns.inum; 174262306a36Sopenharmony_ci __entry->fd = fd; 174362306a36Sopenharmony_ci ), 174462306a36Sopenharmony_ci TP_printk("fd=%d", 174562306a36Sopenharmony_ci __entry->fd 174662306a36Sopenharmony_ci ) 174762306a36Sopenharmony_ci); 174862306a36Sopenharmony_ci 174962306a36Sopenharmony_ciTRACE_EVENT(nfsd_ctl_ports_addxprt, 175062306a36Sopenharmony_ci TP_PROTO( 175162306a36Sopenharmony_ci const struct net *net, 175262306a36Sopenharmony_ci const char *transport, 175362306a36Sopenharmony_ci int port 175462306a36Sopenharmony_ci ), 175562306a36Sopenharmony_ci TP_ARGS(net, transport, port), 175662306a36Sopenharmony_ci TP_STRUCT__entry( 175762306a36Sopenharmony_ci __field(unsigned int, netns_ino) 175862306a36Sopenharmony_ci __field(int, port) 175962306a36Sopenharmony_ci __string(transport, transport) 176062306a36Sopenharmony_ci ), 176162306a36Sopenharmony_ci TP_fast_assign( 176262306a36Sopenharmony_ci __entry->netns_ino = net->ns.inum; 176362306a36Sopenharmony_ci __entry->port = port; 176462306a36Sopenharmony_ci __assign_str(transport, transport); 176562306a36Sopenharmony_ci ), 176662306a36Sopenharmony_ci TP_printk("transport=%s port=%d", 176762306a36Sopenharmony_ci __get_str(transport), __entry->port 176862306a36Sopenharmony_ci ) 176962306a36Sopenharmony_ci); 177062306a36Sopenharmony_ci 177162306a36Sopenharmony_ciTRACE_EVENT(nfsd_ctl_maxblksize, 177262306a36Sopenharmony_ci TP_PROTO( 177362306a36Sopenharmony_ci const struct net *net, 177462306a36Sopenharmony_ci int bsize 177562306a36Sopenharmony_ci ), 177662306a36Sopenharmony_ci TP_ARGS(net, bsize), 177762306a36Sopenharmony_ci TP_STRUCT__entry( 177862306a36Sopenharmony_ci __field(unsigned int, netns_ino) 177962306a36Sopenharmony_ci __field(int, bsize) 178062306a36Sopenharmony_ci ), 178162306a36Sopenharmony_ci TP_fast_assign( 178262306a36Sopenharmony_ci __entry->netns_ino = net->ns.inum; 178362306a36Sopenharmony_ci __entry->bsize = bsize; 178462306a36Sopenharmony_ci ), 178562306a36Sopenharmony_ci TP_printk("bsize=%d", 178662306a36Sopenharmony_ci __entry->bsize 178762306a36Sopenharmony_ci ) 178862306a36Sopenharmony_ci); 178962306a36Sopenharmony_ci 179062306a36Sopenharmony_ciTRACE_EVENT(nfsd_ctl_maxconn, 179162306a36Sopenharmony_ci TP_PROTO( 179262306a36Sopenharmony_ci const struct net *net, 179362306a36Sopenharmony_ci int maxconn 179462306a36Sopenharmony_ci ), 179562306a36Sopenharmony_ci TP_ARGS(net, maxconn), 179662306a36Sopenharmony_ci TP_STRUCT__entry( 179762306a36Sopenharmony_ci __field(unsigned int, netns_ino) 179862306a36Sopenharmony_ci __field(int, maxconn) 179962306a36Sopenharmony_ci ), 180062306a36Sopenharmony_ci TP_fast_assign( 180162306a36Sopenharmony_ci __entry->netns_ino = net->ns.inum; 180262306a36Sopenharmony_ci __entry->maxconn = maxconn; 180362306a36Sopenharmony_ci ), 180462306a36Sopenharmony_ci TP_printk("maxconn=%d", 180562306a36Sopenharmony_ci __entry->maxconn 180662306a36Sopenharmony_ci ) 180762306a36Sopenharmony_ci); 180862306a36Sopenharmony_ci 180962306a36Sopenharmony_ciTRACE_EVENT(nfsd_ctl_time, 181062306a36Sopenharmony_ci TP_PROTO( 181162306a36Sopenharmony_ci const struct net *net, 181262306a36Sopenharmony_ci const char *name, 181362306a36Sopenharmony_ci size_t namelen, 181462306a36Sopenharmony_ci int time 181562306a36Sopenharmony_ci ), 181662306a36Sopenharmony_ci TP_ARGS(net, name, namelen, time), 181762306a36Sopenharmony_ci TP_STRUCT__entry( 181862306a36Sopenharmony_ci __field(unsigned int, netns_ino) 181962306a36Sopenharmony_ci __field(int, time) 182062306a36Sopenharmony_ci __string_len(name, name, namelen) 182162306a36Sopenharmony_ci ), 182262306a36Sopenharmony_ci TP_fast_assign( 182362306a36Sopenharmony_ci __entry->netns_ino = net->ns.inum; 182462306a36Sopenharmony_ci __entry->time = time; 182562306a36Sopenharmony_ci __assign_str_len(name, name, namelen); 182662306a36Sopenharmony_ci ), 182762306a36Sopenharmony_ci TP_printk("file=%s time=%d\n", 182862306a36Sopenharmony_ci __get_str(name), __entry->time 182962306a36Sopenharmony_ci ) 183062306a36Sopenharmony_ci); 183162306a36Sopenharmony_ci 183262306a36Sopenharmony_ciTRACE_EVENT(nfsd_ctl_recoverydir, 183362306a36Sopenharmony_ci TP_PROTO( 183462306a36Sopenharmony_ci const struct net *net, 183562306a36Sopenharmony_ci const char *recdir 183662306a36Sopenharmony_ci ), 183762306a36Sopenharmony_ci TP_ARGS(net, recdir), 183862306a36Sopenharmony_ci TP_STRUCT__entry( 183962306a36Sopenharmony_ci __field(unsigned int, netns_ino) 184062306a36Sopenharmony_ci __string(recdir, recdir) 184162306a36Sopenharmony_ci ), 184262306a36Sopenharmony_ci TP_fast_assign( 184362306a36Sopenharmony_ci __entry->netns_ino = net->ns.inum; 184462306a36Sopenharmony_ci __assign_str(recdir, recdir); 184562306a36Sopenharmony_ci ), 184662306a36Sopenharmony_ci TP_printk("recdir=%s", 184762306a36Sopenharmony_ci __get_str(recdir) 184862306a36Sopenharmony_ci ) 184962306a36Sopenharmony_ci); 185062306a36Sopenharmony_ci 185162306a36Sopenharmony_ciTRACE_EVENT(nfsd_end_grace, 185262306a36Sopenharmony_ci TP_PROTO( 185362306a36Sopenharmony_ci const struct net *net 185462306a36Sopenharmony_ci ), 185562306a36Sopenharmony_ci TP_ARGS(net), 185662306a36Sopenharmony_ci TP_STRUCT__entry( 185762306a36Sopenharmony_ci __field(unsigned int, netns_ino) 185862306a36Sopenharmony_ci ), 185962306a36Sopenharmony_ci TP_fast_assign( 186062306a36Sopenharmony_ci __entry->netns_ino = net->ns.inum; 186162306a36Sopenharmony_ci ), 186262306a36Sopenharmony_ci TP_printk("nn=%d", __entry->netns_ino 186362306a36Sopenharmony_ci ) 186462306a36Sopenharmony_ci); 186562306a36Sopenharmony_ci 186662306a36Sopenharmony_ci#endif /* _NFSD_TRACE_H */ 186762306a36Sopenharmony_ci 186862306a36Sopenharmony_ci#undef TRACE_INCLUDE_PATH 186962306a36Sopenharmony_ci#define TRACE_INCLUDE_PATH . 187062306a36Sopenharmony_ci#define TRACE_INCLUDE_FILE trace 187162306a36Sopenharmony_ci#include <trace/define_trace.h> 1872