Commit 0d885f7e authored by Jeff Layton's avatar Jeff Layton Committed by Chuck Lever
Browse files

nfsd: add tracepoint for getattr and statfs events



There isn't a common helper for getattrs, so add these into the
protocol-specific helpers.

Signed-off-by: default avatarJeff Layton <jlayton@kernel.org>
Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
parent a91bfc45
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -70,6 +70,8 @@ nfsd3_proc_getattr(struct svc_rqst *rqstp)
	struct nfsd_fhandle *argp = rqstp->rq_argp;
	struct nfsd3_attrstat *resp = rqstp->rq_resp;

	trace_nfsd_vfs_getattr(rqstp, &argp->fh);

	dprintk("nfsd: GETATTR(3)  %s\n",
		SVCFH_fmt(&argp->fh));

+2 −0
Original line number Diff line number Diff line
@@ -876,6 +876,8 @@ nfsd4_getattr(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
	struct nfsd4_getattr *getattr = &u->getattr;
	__be32 status;

	trace_nfsd_vfs_getattr(rqstp, &cstate->current_fh);

	status = fh_verify(rqstp, &cstate->current_fh, 0, NFSD_MAY_NOP);
	if (status)
		return status;
+2 −0
Original line number Diff line number Diff line
@@ -55,6 +55,8 @@ nfsd_proc_getattr(struct svc_rqst *rqstp)
	struct nfsd_fhandle *argp = rqstp->rq_argp;
	struct nfsd_attrstat *resp = rqstp->rq_resp;

	trace_nfsd_vfs_getattr(rqstp, &argp->fh);

	dprintk("nfsd: GETATTR  %s\n", SVCFH_fmt(&argp->fh));

	fh_copy(&resp->fh, &argp->fh);
+30 −0
Original line number Diff line number Diff line
@@ -2579,6 +2579,36 @@ TRACE_EVENT(nfsd_vfs_readdir,
	)
);

DECLARE_EVENT_CLASS(nfsd_vfs_getattr_class,
	TP_PROTO(
		const struct svc_rqst *rqstp,
		const struct svc_fh *fhp
	),
	TP_ARGS(rqstp, fhp),
	TP_STRUCT__entry(
		NFSD_TRACE_PROC_CALL_FIELDS(rqstp)
		__field(u32, fh_hash)
	),
	TP_fast_assign(
		NFSD_TRACE_PROC_CALL_ASSIGNMENTS(rqstp);
		__entry->fh_hash = knfsd_fh_hash(&fhp->fh_handle);
	),
	TP_printk("xid=0x%08x fh_hash=0x%08x",
		__entry->xid, __entry->fh_hash
	)
);

#define DEFINE_NFSD_VFS_GETATTR_EVENT(__name)		\
DEFINE_EVENT(nfsd_vfs_getattr_class, __name,		\
	TP_PROTO(					\
		const struct svc_rqst *rqstp,		\
		const struct svc_fh *fhp		\
	),						\
	TP_ARGS(rqstp, fhp))

DEFINE_NFSD_VFS_GETATTR_EVENT(nfsd_vfs_getattr);
DEFINE_NFSD_VFS_GETATTR_EVENT(nfsd_vfs_statfs);

#endif /* _NFSD_TRACE_H */

#undef TRACE_INCLUDE_PATH
+2 −0
Original line number Diff line number Diff line
@@ -2290,6 +2290,8 @@ nfsd_statfs(struct svc_rqst *rqstp, struct svc_fh *fhp, struct kstatfs *stat, in
{
	__be32 err;

	trace_nfsd_vfs_statfs(rqstp, fhp);

	err = fh_verify(rqstp, fhp, 0, NFSD_MAY_NOP | access);
	if (!err) {
		struct path path = {