summaryrefslogtreecommitdiff
path: root/include/trace/events
diff options
context:
space:
mode:
authorChuck Lever <chuck.lever@oracle.com>2024-06-04 22:45:25 +0300
committerAnna Schumaker <Anna.Schumaker@Netapp.com>2024-07-08 20:47:24 +0300
commit3f4eb9ff923413cdb4c7e171c06d3564f6286712 (patch)
treed27098e0377e2fcc743313f159460124cb7df821 /include/trace/events
parent7e86845a0346efc95fddaa97ce5cd6a8bda8c71c (diff)
downloadlinux-3f4eb9ff923413cdb4c7e171c06d3564f6286712.tar.xz
xprtrdma: Handle device removal outside of the CM event handler
Wait for all disconnects to complete to ensure the transport has divested all of its hardware resources before the underlying RDMA device can be removed. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Reviewed-by: Sagi Grimberg <sagi@grimberg.me> Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
Diffstat (limited to 'include/trace/events')
-rw-r--r--include/trace/events/rpcrdma.h23
1 files changed, 23 insertions, 0 deletions
diff --git a/include/trace/events/rpcrdma.h b/include/trace/events/rpcrdma.h
index ecdaf088219d..ba2d6a0e41cc 100644
--- a/include/trace/events/rpcrdma.h
+++ b/include/trace/events/rpcrdma.h
@@ -669,6 +669,29 @@ TRACE_EVENT(xprtrdma_inline_thresh,
DEFINE_CONN_EVENT(connect);
DEFINE_CONN_EVENT(disconnect);
+TRACE_EVENT(xprtrdma_device_removal,
+ TP_PROTO(
+ const struct rdma_cm_id *id
+ ),
+
+ TP_ARGS(id),
+
+ TP_STRUCT__entry(
+ __string(name, id->device->name)
+ __array(unsigned char, addr, sizeof(struct sockaddr_in6))
+ ),
+
+ TP_fast_assign(
+ __assign_str(name);
+ memcpy(__entry->addr, &id->route.addr.dst_addr,
+ sizeof(struct sockaddr_in6));
+ ),
+
+ TP_printk("device %s to be removed, disconnecting %pISpc\n",
+ __get_str(name), __entry->addr
+ )
+);
+
DEFINE_RXPRT_EVENT(xprtrdma_op_inject_dsc);
TRACE_EVENT(xprtrdma_op_connect,