Skip to content

Commit 97d1c83

Browse files
chuckleverTrond Myklebust
authored andcommitted
SUNRPC: Trace the rpc_create_args
Pass the upper layer's rpc_create_args to the rpc_clnt_new() tracepoint so additional parts of the upper layer's request can be recorded. Signed-off-by: Chuck Lever <[email protected]> Reviewed-by: Jeff Layton <[email protected]> Signed-off-by: Trond Myklebust <[email protected]>
1 parent 5000531 commit 97d1c83

File tree

2 files changed

+43
-11
lines changed

2 files changed

+43
-11
lines changed

include/trace/events/sunrpc.h

Lines changed: 42 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -139,36 +139,68 @@ DEFINE_RPC_CLNT_EVENT(release);
139139
DEFINE_RPC_CLNT_EVENT(replace_xprt);
140140
DEFINE_RPC_CLNT_EVENT(replace_xprt_err);
141141

142+
TRACE_DEFINE_ENUM(RPC_XPRTSEC_NONE);
143+
TRACE_DEFINE_ENUM(RPC_XPRTSEC_TLS_X509);
144+
145+
#define rpc_show_xprtsec_policy(policy) \
146+
__print_symbolic(policy, \
147+
{ RPC_XPRTSEC_NONE, "none" }, \
148+
{ RPC_XPRTSEC_TLS_ANON, "tls-anon" }, \
149+
{ RPC_XPRTSEC_TLS_X509, "tls-x509" })
150+
151+
#define rpc_show_create_flags(flags) \
152+
__print_flags(flags, "|", \
153+
{ RPC_CLNT_CREATE_HARDRTRY, "HARDRTRY" }, \
154+
{ RPC_CLNT_CREATE_AUTOBIND, "AUTOBIND" }, \
155+
{ RPC_CLNT_CREATE_NONPRIVPORT, "NONPRIVPORT" }, \
156+
{ RPC_CLNT_CREATE_NOPING, "NOPING" }, \
157+
{ RPC_CLNT_CREATE_DISCRTRY, "DISCRTRY" }, \
158+
{ RPC_CLNT_CREATE_QUIET, "QUIET" }, \
159+
{ RPC_CLNT_CREATE_INFINITE_SLOTS, \
160+
"INFINITE_SLOTS" }, \
161+
{ RPC_CLNT_CREATE_NO_IDLE_TIMEOUT, \
162+
"NO_IDLE_TIMEOUT" }, \
163+
{ RPC_CLNT_CREATE_NO_RETRANS_TIMEOUT, \
164+
"NO_RETRANS_TIMEOUT" }, \
165+
{ RPC_CLNT_CREATE_SOFTERR, "SOFTERR" }, \
166+
{ RPC_CLNT_CREATE_REUSEPORT, "REUSEPORT" })
167+
142168
TRACE_EVENT(rpc_clnt_new,
143169
TP_PROTO(
144170
const struct rpc_clnt *clnt,
145171
const struct rpc_xprt *xprt,
146-
const char *program,
147-
const char *server
172+
const struct rpc_create_args *args
148173
),
149174

150-
TP_ARGS(clnt, xprt, program, server),
175+
TP_ARGS(clnt, xprt, args),
151176

152177
TP_STRUCT__entry(
153178
__field(unsigned int, client_id)
179+
__field(unsigned long, xprtsec)
180+
__field(unsigned long, flags)
181+
__string(program, clnt->cl_program->name)
182+
__string(server, xprt->servername)
154183
__string(addr, xprt->address_strings[RPC_DISPLAY_ADDR])
155184
__string(port, xprt->address_strings[RPC_DISPLAY_PORT])
156-
__string(program, program)
157-
__string(server, server)
158185
),
159186

160187
TP_fast_assign(
161188
__entry->client_id = clnt->cl_clid;
189+
__entry->xprtsec = args->xprtsec.policy;
190+
__entry->flags = args->flags;
191+
__assign_str(program, clnt->cl_program->name);
192+
__assign_str(server, xprt->servername);
162193
__assign_str(addr, xprt->address_strings[RPC_DISPLAY_ADDR]);
163194
__assign_str(port, xprt->address_strings[RPC_DISPLAY_PORT]);
164-
__assign_str(program, program);
165-
__assign_str(server, server);
166195
),
167196

168-
TP_printk("client=" SUNRPC_TRACE_CLID_SPECIFIER
169-
" peer=[%s]:%s program=%s server=%s",
197+
TP_printk("client=" SUNRPC_TRACE_CLID_SPECIFIER " peer=[%s]:%s"
198+
" program=%s server=%s xprtsec=%s flags=%s",
170199
__entry->client_id, __get_str(addr), __get_str(port),
171-
__get_str(program), __get_str(server))
200+
__get_str(program), __get_str(server),
201+
rpc_show_xprtsec_policy(__entry->xprtsec),
202+
rpc_show_create_flags(__entry->flags)
203+
)
172204
);
173205

174206
TRACE_EVENT(rpc_clnt_new_err,

net/sunrpc/clnt.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -435,7 +435,7 @@ static struct rpc_clnt * rpc_new_client(const struct rpc_create_args *args,
435435
if (parent)
436436
refcount_inc(&parent->cl_count);
437437

438-
trace_rpc_clnt_new(clnt, xprt, program->name, args->servername);
438+
trace_rpc_clnt_new(clnt, xprt, args);
439439
return clnt;
440440

441441
out_no_path:

0 commit comments

Comments
 (0)