Handle STATUS_IO_TIMEOUT gracefully
authorRohith Surabattula <rohiths@microsoft.com>
Fri, 18 Sep 2020 05:37:28 +0000 (05:37 +0000)
committerSteve French <stfrench@microsoft.com>
Fri, 16 Oct 2020 04:58:04 +0000 (23:58 -0500)
commit8e670f77c4a55013db6d23b962f9bf6673a5e7b6
treeab0a3802b3b1ae95c652569bb838c3a92e054f60
parentd1542cf6165e526a6837cc9d1e20cb0da841bd0b
Handle STATUS_IO_TIMEOUT gracefully

Currently STATUS_IO_TIMEOUT is not treated as retriable error.
It is currently mapped to ETIMEDOUT and returned to userspace
for most system calls. STATUS_IO_TIMEOUT is returned by server
in case of unavailability or throttling errors.

This patch will map the STATUS_IO_TIMEOUT to EAGAIN, so that it
can be retried. Also, added a check to drop the connection to
not overload the server in case of ongoing unavailability.

Signed-off-by: Rohith Surabattula <rohiths@microsoft.com>
Reviewed-by: Aurelien Aptel <aaptel@suse.com>
Reviewed-by: Pavel Shilovsky <pshilov@microsoft.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
fs/cifs/cifsglob.h
fs/cifs/connect.c
fs/cifs/smb2maperror.c
fs/cifs/smb2ops.c