From: Olga Kornievskaia <redacted>
Currently, if the server returns a partial layout, the client gets
stuck asking for a layout indefinitely. Until we add support for
partial layouts, treat partial layout as layout unavailable error.
Signed-off-by: Olga Kornievskaia <redacted>
---
fs/nfs/nfs4proc.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
index dae4c1b6cc1c..108bc7f3e8c2 100644
--- a/fs/nfs/nfs4proc.c
+++ b/fs/nfs/nfs4proc.c
@@ -9790,6 +9790,12 @@ nfs4_proc_layoutget(struct nfs4_layoutget *lgp,
if (status != 0)
goto out;
+ /* Since client does not support partial pnfs layout, then treat
+ * getting a partial layout as LAYOUTUNAVAILABLE error
+ */
+ if (lgp->args.range.length != lgp->res.range.length)
+ task->tk_status = -NFS4ERR_LAYOUTUNAVAILABLE;
+
if (task->tk_status < 0) {
exception->retry = 1;
status = nfs4_layoutget_handle_exception(task, lgp, exception);--
2.39.1