Skip to content

Commit be1dbb0

Browse files
committed
smb: server: make use of rdma_destroy_qp()
The qp is created by rdma_create_qp() as t->cm_id->qp and t->qp is just a shortcut. rdma_destroy_qp() also calls ib_destroy_qp(cm_id->qp) internally, but it is protected by a mutex, clears the cm_id and also calls trace_cm_qp_destroy(). This should make the tracing more useful as both rdma_create_qp() and rdma_destroy_qp() are traces and it makes the code look more sane as functions from the same layer are used for the specific qp object. trace-cmd stream -e rdma_cma:cm_qp_create -e rdma_cma:cm_qp_destroy shows this now while doing a mount and unmount from a client: <...>-80 [002] 378.514182: cm_qp_create: cm.id=1 src=172.31.9.167:5445 dst=172.31.9.166:37113 tos=0 pd.id=0 qp_type=RC send_wr=867 recv_wr=255 qp_num=1 rc=0 <...>-6283 [001] 381.686172: cm_qp_destroy: cm.id=1 src=172.31.9.167:5445 dst=172.31.9.166:37113 tos=0 qp_num=1 Before we only saw the first line. Cc: Namjae Jeon <[email protected]> Cc: Steve French <[email protected]> Cc: Sergey Senozhatsky <[email protected]> Cc: Hyunchul Lee <[email protected]> Cc: Tom Talpey <[email protected]> Cc: [email protected] Fixes: 0626e6641f6b ("cifsd: add server handler for central processing and tranport layers") Signed-off-by: Stefan Metzmacher <[email protected]> Signed-off-by: Namjae Jeon <[email protected]>
1 parent d21a8f3 commit be1dbb0

File tree

1 file changed

+3
-2
lines changed

1 file changed

+3
-2
lines changed

transport_rdma.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -432,7 +432,8 @@ static void free_transport(struct smb_direct_transport *t)
432432
if (t->qp) {
433433
ib_drain_qp(t->qp);
434434
ib_mr_pool_destroy(t->qp, &t->qp->rdma_mrs);
435-
ib_destroy_qp(t->qp);
435+
t->qp = NULL;
436+
rdma_destroy_qp(t->cm_id);
436437
}
437438

438439
ksmbd_debug(RDMA, "drain the reassembly queue\n");
@@ -1944,8 +1945,8 @@ static int smb_direct_create_qpair(struct smb_direct_transport *t,
19441945
return 0;
19451946
err:
19461947
if (t->qp) {
1947-
ib_destroy_qp(t->qp);
19481948
t->qp = NULL;
1949+
rdma_destroy_qp(t->cm_id);
19491950
}
19501951
if (t->recv_cq) {
19511952
ib_destroy_cq(t->recv_cq);

0 commit comments

Comments
 (0)