summaryrefslogtreecommitdiff
path: root/fs/cifs
diff options
context:
space:
mode:
authorShyam Prasad N <sprasad@microsoft.com>2021-02-04 09:58:38 +0300
committerSteve French <stfrench@microsoft.com>2021-02-17 00:40:13 +0300
commit7de0394801da4f759684c4a33cf62f12da6e447d (patch)
tree4aa360c8cdc8e27fd103c99e19d4d207a7a88df4 /fs/cifs
parent0f56db831456cb4bf85a15c7a900b7138d89b6eb (diff)
downloadlinux-7de0394801da4f759684c4a33cf62f12da6e447d.tar.xz
cifs: Fix in error types returned for out-of-credit situations.
For failure by timeout waiting for credits, changed the error returned to the app with EBUSY, instead of ENOTSUPP. This is done because this situation is possible even in non-buggy cases. i.e. overloaded server can return 0 credits until done with outstanding requests. And this feels like a better error to return to the app. For cases of zero credits found even when there are no requests in flight, replaced ENOTSUPP with EDEADLK, since we're avoiding deadlock here by returning error. Signed-off-by: Shyam Prasad N <sprasad@microsoft.com> Reviewed-by: Pavel Shilovsky <pshilov@microsoft.com> Signed-off-by: Steve French <stfrench@microsoft.com>
Diffstat (limited to 'fs/cifs')
-rw-r--r--fs/cifs/transport.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/fs/cifs/transport.c b/fs/cifs/transport.c
index 41223a9ee086..39e87705840d 100644
--- a/fs/cifs/transport.c
+++ b/fs/cifs/transport.c
@@ -567,7 +567,7 @@ wait_for_free_credits(struct TCP_Server_Info *server, const int num_credits,
server->hostname, num_credits, 0);
cifs_server_dbg(VFS, "wait timed out after %d ms\n",
timeout);
- return -ENOTSUPP;
+ return -EBUSY;
}
if (rc == -ERESTARTSYS)
return -ERESTARTSYS;
@@ -609,7 +609,7 @@ wait_for_free_credits(struct TCP_Server_Info *server, const int num_credits,
0);
cifs_server_dbg(VFS, "wait timed out after %d ms\n",
timeout);
- return -ENOTSUPP;
+ return -EBUSY;
}
if (rc == -ERESTARTSYS)
return -ERESTARTSYS;
@@ -687,7 +687,7 @@ wait_for_compound_request(struct TCP_Server_Info *server, int num,
server->hostname, scredits, sin_flight);
cifs_dbg(FYI, "%s: %d requests in flight, needed %d total=%d\n",
__func__, sin_flight, num, scredits);
- return -ENOTSUPP;
+ return -EDEADLK;
}
}
spin_unlock(&server->req_lock);