Commit dc0112e6 authored by Chuck Lever's avatar Chuck Lever Committed by Anna Schumaker

rpcrdma: Trace connection registration and unregistration

These new trace points record xarray indices and the time of
endpoint registration and unregistration, to co-ordinate with
device removal events.
Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
Signed-off-by: default avatarAnna Schumaker <Anna.Schumaker@Netapp.com>
parent 6b3b023e
...@@ -2277,6 +2277,42 @@ DEFINE_CLIENT_DEVICE_EVENT(rpcrdma_client_remove_one); ...@@ -2277,6 +2277,42 @@ DEFINE_CLIENT_DEVICE_EVENT(rpcrdma_client_remove_one);
DEFINE_CLIENT_DEVICE_EVENT(rpcrdma_client_wait_on); DEFINE_CLIENT_DEVICE_EVENT(rpcrdma_client_wait_on);
DEFINE_CLIENT_DEVICE_EVENT(rpcrdma_client_remove_one_done); DEFINE_CLIENT_DEVICE_EVENT(rpcrdma_client_remove_one_done);
DECLARE_EVENT_CLASS(rpcrdma_client_register_class,
TP_PROTO(
const struct ib_device *device,
const struct rpcrdma_notification *rn
),
TP_ARGS(device, rn),
TP_STRUCT__entry(
__string(name, device->name)
__field(void *, callback)
__field(u32, index)
),
TP_fast_assign(
__assign_str(name);
__entry->callback = rn->rn_done;
__entry->index = rn->rn_index;
),
TP_printk("device=%s index=%u done callback=%pS\n",
__get_str(name), __entry->index, __entry->callback
)
);
#define DEFINE_CLIENT_REGISTER_EVENT(name) \
DEFINE_EVENT(rpcrdma_client_register_class, name, \
TP_PROTO( \
const struct ib_device *device, \
const struct rpcrdma_notification *rn \
), \
TP_ARGS(device, rn))
DEFINE_CLIENT_REGISTER_EVENT(rpcrdma_client_register);
DEFINE_CLIENT_REGISTER_EVENT(rpcrdma_client_unregister);
#endif /* _TRACE_RPCRDMA_H */ #endif /* _TRACE_RPCRDMA_H */
#include <trace/define_trace.h> #include <trace/define_trace.h>
...@@ -66,6 +66,7 @@ int rpcrdma_rn_register(struct ib_device *device, ...@@ -66,6 +66,7 @@ int rpcrdma_rn_register(struct ib_device *device,
return -ENOMEM; return -ENOMEM;
kref_get(&rd->rd_kref); kref_get(&rd->rd_kref);
rn->rn_done = done; rn->rn_done = done;
trace_rpcrdma_client_register(device, rn);
return 0; return 0;
} }
...@@ -91,6 +92,7 @@ void rpcrdma_rn_unregister(struct ib_device *device, ...@@ -91,6 +92,7 @@ void rpcrdma_rn_unregister(struct ib_device *device,
if (!rd) if (!rd)
return; return;
trace_rpcrdma_client_unregister(device, rn);
xa_erase(&rd->rd_xa, rn->rn_index); xa_erase(&rd->rd_xa, rn->rn_index);
kref_put(&rd->rd_kref, rpcrdma_rn_release); kref_put(&rd->rd_kref, rpcrdma_rn_release);
} }
......
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