Commit 45e3eda4 authored by Chuck Lever's avatar Chuck Lever
Browse files

NFSD: Use sockaddr instead of a generic array



Record and emit presentation addresses using tracing helpers
designed for the task.

Reviewed-by: default avatarJeff Layton <jlayton@kernel.org>
Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
parent d6ca7d26
Loading
Loading
Loading
Loading
+15 −14
Original line number Diff line number Diff line
@@ -18,22 +18,23 @@
#include "nfsfh.h"
#include "xdr4.h"

#define NFSD_TRACE_PROC_RES_FIELDS \
#define NFSD_TRACE_PROC_RES_FIELDS(r) \
		__field(unsigned int, netns_ino) \
		__field(u32, xid) \
		__field(unsigned long, status) \
		__array(unsigned char, server, sizeof(struct sockaddr_in6)) \
		__array(unsigned char, client, sizeof(struct sockaddr_in6))
		__sockaddr(server, (r)->rq_xprt->xpt_locallen) \
		__sockaddr(client, (r)->rq_xprt->xpt_remotelen)

#define NFSD_TRACE_PROC_RES_ASSIGNMENTS(error) \
#define NFSD_TRACE_PROC_RES_ASSIGNMENTS(r, error) \
		do { \
			__entry->netns_ino = SVC_NET(rqstp)->ns.inum; \
			__entry->xid = be32_to_cpu(rqstp->rq_xid); \
			struct svc_xprt *xprt = (r)->rq_xprt; \
			__entry->netns_ino = SVC_NET(r)->ns.inum; \
			__entry->xid = be32_to_cpu((r)->rq_xid); \
			__entry->status = be32_to_cpu(error); \
			memcpy(__entry->server, &rqstp->rq_xprt->xpt_local, \
			       rqstp->rq_xprt->xpt_locallen); \
			memcpy(__entry->client, &rqstp->rq_xprt->xpt_remote, \
			       rqstp->rq_xprt->xpt_remotelen); \
			__assign_sockaddr(server, &xprt->xpt_local, \
					  xprt->xpt_locallen); \
			__assign_sockaddr(client, &xprt->xpt_remote, \
					  xprt->xpt_remotelen); \
		} while (0);

DECLARE_EVENT_CLASS(nfsd_xdr_err_class,
@@ -145,14 +146,14 @@ TRACE_EVENT(nfsd_compound_decode_err,
	),
	TP_ARGS(rqstp, args_opcnt, resp_opcnt, opnum, status),
	TP_STRUCT__entry(
		NFSD_TRACE_PROC_RES_FIELDS
		NFSD_TRACE_PROC_RES_FIELDS(rqstp)

		__field(u32, args_opcnt)
		__field(u32, resp_opcnt)
		__field(u32, opnum)
	),
	TP_fast_assign(
		NFSD_TRACE_PROC_RES_ASSIGNMENTS(status)
		NFSD_TRACE_PROC_RES_ASSIGNMENTS(rqstp, status)

		__entry->args_opcnt = args_opcnt;
		__entry->resp_opcnt = resp_opcnt;
@@ -171,12 +172,12 @@ DECLARE_EVENT_CLASS(nfsd_compound_err_class,
	),
	TP_ARGS(rqstp, opnum, status),
	TP_STRUCT__entry(
		NFSD_TRACE_PROC_RES_FIELDS
		NFSD_TRACE_PROC_RES_FIELDS(rqstp)

		__field(u32, opnum)
	),
	TP_fast_assign(
		NFSD_TRACE_PROC_RES_ASSIGNMENTS(status)
		NFSD_TRACE_PROC_RES_ASSIGNMENTS(rqstp, status)

		__entry->opnum = opnum;
	),