Re: [PATCH] ksmbd: call ib_drain_qp when disconnected

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



2022-10-03 3:11 GMT+09:00, Tom Talpey <tom@xxxxxxxxxx>:
> On 10/1/2022 11:01 PM, Namjae Jeon wrote:
>> 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@xxxxxxxxx>
>> Signed-off-by: Namjae Jeon <linkinjeon@xxxxxxxxxx>
>> ---
>>   fs/ksmbd/transport_rdma.c | 2 ++
>>   1 file changed, 2 insertions(+)
>>
>> 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);
>
> Because we're now flushing the cancelled work requests, don't
> we need to also wake up &t->wait_send_pending, to abort any
> waiters on the send wq?
Could you please elaborate more how it could be a problem ?
send_pending is decreased and wake_up &t->wait_send_pending if it is
zero in send_done().

>
> Tom.
>



[Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux