nfsd: add a tracepoint to nfsd_lookup_dentry

Replace the dprintk in nfsd_lookup_dentry() with a trace point.
nfsd_lookup_dentry() is called frequently enough that enabling this
dprintk call site would result in log floods and performance issues.

Signed-off-by: Jeff Layton <jlayton@kernel.org>
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
This commit is contained in:
Jeff Layton 2025-05-03 15:59:22 -04:00 committed by Chuck Lever
parent adbdd746e8
commit a5256e687f
2 changed files with 24 additions and 1 deletions

View File

@ -2394,6 +2394,29 @@ TRACE_EVENT(nfsd_vfs_setattr,
)
)
TRACE_EVENT(nfsd_vfs_lookup,
TP_PROTO(
const struct svc_rqst *rqstp,
const struct svc_fh *fhp,
const char *name,
unsigned int len
),
TP_ARGS(rqstp, fhp, name, len),
TP_STRUCT__entry(
NFSD_TRACE_PROC_CALL_FIELDS(rqstp)
__field(u32, fh_hash)
__string_len(name, name, len)
),
TP_fast_assign(
NFSD_TRACE_PROC_CALL_ASSIGNMENTS(rqstp);
__entry->fh_hash = knfsd_fh_hash(&fhp->fh_handle);
__assign_str(name);
),
TP_printk("xid=0x%08x fh_hash=0x%08x name=%s",
__entry->xid, __entry->fh_hash, __get_str(name)
)
);
#endif /* _NFSD_TRACE_H */
#undef TRACE_INCLUDE_PATH

View File

@ -246,7 +246,7 @@ nfsd_lookup_dentry(struct svc_rqst *rqstp, struct svc_fh *fhp,
struct dentry *dentry;
int host_err;
dprintk("nfsd: nfsd_lookup(fh %s, %.*s)\n", SVCFH_fmt(fhp), len,name);
trace_nfsd_vfs_lookup(rqstp, fhp, name, len);
dparent = fhp->fh_dentry;
exp = exp_get(fhp->fh_export);