diff options
author | Rohith Surabattula <rohiths@microsoft.com> | 2020-09-18 05:37:28 +0000 |
---|---|---|
committer | Steve French <stfrench@microsoft.com> | 2020-10-15 23:58:04 -0500 |
commit | 8e670f77c4a55013db6d23b962f9bf6673a5e7b6 (patch) | |
tree | ab0a3802b3b1ae95c652569bb838c3a92e054f60 /fs/cifs/cifsglob.h | |
parent | d1542cf6165e526a6837cc9d1e20cb0da841bd0b (diff) | |
download | lwn-8e670f77c4a55013db6d23b962f9bf6673a5e7b6.tar.gz lwn-8e670f77c4a55013db6d23b962f9bf6673a5e7b6.zip |
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>
Diffstat (limited to 'fs/cifs/cifsglob.h')
-rw-r--r-- | fs/cifs/cifsglob.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/fs/cifs/cifsglob.h b/fs/cifs/cifsglob.h index b565d83ba89e..5a491afafacc 100644 --- a/fs/cifs/cifsglob.h +++ b/fs/cifs/cifsglob.h @@ -510,6 +510,8 @@ struct smb_version_operations { struct fiemap_extent_info *, u64, u64); /* version specific llseek implementation */ loff_t (*llseek)(struct file *, struct cifs_tcon *, loff_t, int); + /* Check for STATUS_IO_TIMEOUT */ + bool (*is_status_io_timeout)(char *buf); }; struct smb_version_values { |