diff options
author | Namjae Jeon <linkinjeon@kernel.org> | 2022-10-02 09:38:48 +0900 |
---|---|---|
committer | Steve French <stfrench@microsoft.com> | 2022-10-05 01:15:44 -0500 |
commit | 141fa9824c0fc11d44b2d5bb1266a33e95fa67fd (patch) | |
tree | 845359fa5a66775ea547e5a760fc7539290227b2 | |
parent | dbab80e2071ad8c702e50dab43326608a127d27b (diff) | |
download | linux-141fa9824c0fc11d44b2d5bb1266a33e95fa67fd.tar.gz linux-141fa9824c0fc11d44b2d5bb1266a33e95fa67fd.tar.bz2 linux-141fa9824c0fc11d44b2d5bb1266a33e95fa67fd.zip |
ksmbd: call ib_drain_qp when disconnected
When disconnected, call ib_drain_qp to cancel all pending work requests
and prevent ksmbd_conn_handler_loop from waiting for a long time
for those work requests to compelete.
Signed-off-by: Hyunchul Lee <hyc.lee@gmail.com>
Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
Reviewed-by: Tom Talpey <tom@talpey.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
-rw-r--r-- | fs/ksmbd/transport_rdma.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/fs/ksmbd/transport_rdma.c b/fs/ksmbd/transport_rdma.c index 0315bca3d53b..096eda9ef873 100644 --- a/fs/ksmbd/transport_rdma.c +++ b/fs/ksmbd/transport_rdma.c @@ -1527,6 +1527,8 @@ static int smb_direct_cm_handler(struct rdma_cm_id *cm_id, } case RDMA_CM_EVENT_DEVICE_REMOVAL: case RDMA_CM_EVENT_DISCONNECTED: { + ib_drain_qp(t->qp); + t->status = SMB_DIRECT_CS_DISCONNECTED; wake_up_interruptible(&t->wait_status); wake_up_interruptible(&t->wait_reassembly_queue); |