smbd: Make upper layer decide when to destroy the transport
authorLong Li <longli@microsoft.com>
Thu, 4 Apr 2019 16:35:42 +0000 (11:35 -0500)
committerSteve French <stfrench@microsoft.com>
Wed, 8 May 2019 04:24:54 +0000 (23:24 -0500)
commit050b8c374019c10e4bcc3fbc9023884f76a85d9c
treed16835fec543aff2d3ca532201ede6c14df2b66a
parent973189aba69e59f11d987c21bd18409e58ece6fd
smbd: Make upper layer decide when to destroy the transport

On transport recoonect, upper layer CIFS code destroys the current
transport and then recoonect. This code path is not used by SMBD, in that
SMBD destroys its transport on RDMA disconnect notification independent of
CIFS upper layer behavior.

This approach adds some costs to SMBD layer to handle transport shutdown
and restart, and to deal with several racing conditions on reconnecting
transport.

Re-work this code path by introducing a new smbd_destroy. This function is
called form upper layer to ask SMBD to destroy the transport. SMBD will no
longer need to destroy the transport by itself while worrying about data
transfer is in progress. The upper layer guarantees the transport is
locked.

change log:
v2: fix build errors when CONFIG_CIFS_SMB_DIRECT is not configured

Signed-off-by: Long Li <longli@microsoft.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
fs/cifs/connect.c
fs/cifs/smbdirect.c
fs/cifs/smbdirect.h