Commit 94afd9c4 authored by Chuck Lever's avatar Chuck Lever Committed by Anna Schumaker

SUNRPC: rpc_xprt lifetime events should record xprt->state

Help troubleshoot the logic that uses these flags.
Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
Signed-off-by: default avatarAnna Schumaker <Anna.Schumaker@Netapp.com>
parent 5bffb006
...@@ -835,6 +835,30 @@ DEFINE_RPC_SOCKET_EVENT_DONE(rpc_socket_reset_connection); ...@@ -835,6 +835,30 @@ DEFINE_RPC_SOCKET_EVENT_DONE(rpc_socket_reset_connection);
DEFINE_RPC_SOCKET_EVENT(rpc_socket_close); DEFINE_RPC_SOCKET_EVENT(rpc_socket_close);
DEFINE_RPC_SOCKET_EVENT(rpc_socket_shutdown); DEFINE_RPC_SOCKET_EVENT(rpc_socket_shutdown);
TRACE_DEFINE_ENUM(XPRT_LOCKED);
TRACE_DEFINE_ENUM(XPRT_CONNECTED);
TRACE_DEFINE_ENUM(XPRT_CONNECTING);
TRACE_DEFINE_ENUM(XPRT_CLOSE_WAIT);
TRACE_DEFINE_ENUM(XPRT_BOUND);
TRACE_DEFINE_ENUM(XPRT_BINDING);
TRACE_DEFINE_ENUM(XPRT_CLOSING);
TRACE_DEFINE_ENUM(XPRT_CONGESTED);
TRACE_DEFINE_ENUM(XPRT_CWND_WAIT);
TRACE_DEFINE_ENUM(XPRT_WRITE_SPACE);
#define rpc_show_xprt_state(x) \
__print_flags(x, "|", \
{ (1UL << XPRT_LOCKED), "LOCKED"}, \
{ (1UL << XPRT_CONNECTED), "CONNECTED"}, \
{ (1UL << XPRT_CONNECTING), "CONNECTING"}, \
{ (1UL << XPRT_CLOSE_WAIT), "CLOSE_WAIT"}, \
{ (1UL << XPRT_BOUND), "BOUND"}, \
{ (1UL << XPRT_BINDING), "BINDING"}, \
{ (1UL << XPRT_CLOSING), "CLOSING"}, \
{ (1UL << XPRT_CONGESTED), "CONGESTED"}, \
{ (1UL << XPRT_CWND_WAIT), "CWND_WAIT"}, \
{ (1UL << XPRT_WRITE_SPACE), "WRITE_SPACE"})
DECLARE_EVENT_CLASS(rpc_xprt_lifetime_class, DECLARE_EVENT_CLASS(rpc_xprt_lifetime_class,
TP_PROTO( TP_PROTO(
const struct rpc_xprt *xprt const struct rpc_xprt *xprt
...@@ -843,16 +867,20 @@ DECLARE_EVENT_CLASS(rpc_xprt_lifetime_class, ...@@ -843,16 +867,20 @@ DECLARE_EVENT_CLASS(rpc_xprt_lifetime_class,
TP_ARGS(xprt), TP_ARGS(xprt),
TP_STRUCT__entry( TP_STRUCT__entry(
__field(unsigned long, state)
__string(addr, xprt->address_strings[RPC_DISPLAY_ADDR]) __string(addr, xprt->address_strings[RPC_DISPLAY_ADDR])
__string(port, xprt->address_strings[RPC_DISPLAY_PORT]) __string(port, xprt->address_strings[RPC_DISPLAY_PORT])
), ),
TP_fast_assign( TP_fast_assign(
__entry->state = xprt->state;
__assign_str(addr, xprt->address_strings[RPC_DISPLAY_ADDR]); __assign_str(addr, xprt->address_strings[RPC_DISPLAY_ADDR]);
__assign_str(port, xprt->address_strings[RPC_DISPLAY_PORT]); __assign_str(port, xprt->address_strings[RPC_DISPLAY_PORT]);
), ),
TP_printk("peer=[%s]:%s", __get_str(addr), __get_str(port)) TP_printk("peer=[%s]:%s state=%s",
__get_str(addr), __get_str(port),
rpc_show_xprt_state(__entry->state))
); );
#define DEFINE_RPC_XPRT_LIFETIME_EVENT(name) \ #define DEFINE_RPC_XPRT_LIFETIME_EVENT(name) \
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment