Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

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 <chuck.lever@oracle.com>
Reviewed-by: Jeff Layton <jlayton@kernel.org>
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>

authored by

Chuck Lever and committed by
Trond Myklebust
97d1c83c 50005319

+43 -11
+42 -10
include/trace/events/sunrpc.h
··· 139 139 DEFINE_RPC_CLNT_EVENT(replace_xprt); 140 140 DEFINE_RPC_CLNT_EVENT(replace_xprt_err); 141 141 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 + 142 168 TRACE_EVENT(rpc_clnt_new, 143 169 TP_PROTO( 144 170 const struct rpc_clnt *clnt, 145 171 const struct rpc_xprt *xprt, 146 - const char *program, 147 - const char *server 172 + const struct rpc_create_args *args 148 173 ), 149 174 150 - TP_ARGS(clnt, xprt, program, server), 175 + TP_ARGS(clnt, xprt, args), 151 176 152 177 TP_STRUCT__entry( 153 178 __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) 154 183 __string(addr, xprt->address_strings[RPC_DISPLAY_ADDR]) 155 184 __string(port, xprt->address_strings[RPC_DISPLAY_PORT]) 156 - __string(program, program) 157 - __string(server, server) 158 185 ), 159 186 160 187 TP_fast_assign( 161 188 __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); 162 193 __assign_str(addr, xprt->address_strings[RPC_DISPLAY_ADDR]); 163 194 __assign_str(port, xprt->address_strings[RPC_DISPLAY_PORT]); 164 - __assign_str(program, program); 165 - __assign_str(server, server); 166 195 ), 167 196 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", 170 199 __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 + ) 172 204 ); 173 205 174 206 TRACE_EVENT(rpc_clnt_new_err,
+1 -1
net/sunrpc/clnt.c
··· 435 435 if (parent) 436 436 refcount_inc(&parent->cl_count); 437 437 438 - trace_rpc_clnt_new(clnt, xprt, program->name, args->servername); 438 + trace_rpc_clnt_new(clnt, xprt, args); 439 439 return clnt; 440 440 441 441 out_no_path: