diff options
| author | Chuck Lever <chuck.lever@oracle.com> | 2024-07-29 16:52:32 -0400 |
|---|---|---|
| committer | Chuck Lever <chuck.lever@oracle.com> | 2024-09-20 19:31:03 -0400 |
| commit | c4de97f7c45434985e5dbf2d6ccc9eca676e37fe (patch) | |
| tree | 44ff5a824220c81f9b5864f773207337e7f762b1 /include/trace | |
| parent | 438f81e0e92a780b117097503599eb030b77dabe (diff) | |
| download | linux-c4de97f7c45434985e5dbf2d6ccc9eca676e37fe.tar.gz linux-c4de97f7c45434985e5dbf2d6ccc9eca676e37fe.tar.bz2 linux-c4de97f7c45434985e5dbf2d6ccc9eca676e37fe.zip | |
svcrdma: Handle device removal outside of the CM event handler
Synchronously wait for all disconnects to complete to ensure the
transports have divested all hardware resources before the
underlying RDMA device can safely be removed.
Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Diffstat (limited to 'include/trace')
| -rw-r--r-- | include/trace/events/rpcrdma.h | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/include/trace/events/rpcrdma.h b/include/trace/events/rpcrdma.h index a96a985c49b3..e6a72646c507 100644 --- a/include/trace/events/rpcrdma.h +++ b/include/trace/events/rpcrdma.h @@ -2172,6 +2172,29 @@ TRACE_EVENT(svcrdma_qp_error, ) ); +TRACE_EVENT(svcrdma_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 + ) +); + DECLARE_EVENT_CLASS(svcrdma_sendqueue_class, TP_PROTO( const struct svcxprt_rdma *rdma, |
