NFSv4.2: fix handling of COPY ERR_OFFLOAD_NO_REQ
authorOlga Kornievskaia <kolga@netapp.com>
Thu, 24 Aug 2023 20:43:53 +0000 (16:43 -0400)
committerAnna Schumaker <Anna.Schumaker@Netapp.com>
Wed, 30 Aug 2023 15:08:27 +0000 (11:08 -0400)
If the client sent a synchronous copy and the server replied with
ERR_OFFLOAD_NO_REQ indicating that it wants an asynchronous
copy instead, the client should retry with asynchronous copy.

Fixes: 539f57b3e0fd ("NFS handle COPY ERR_OFFLOAD_NO_REQS")
Signed-off-by: Olga Kornievskaia <kolga@netapp.com>
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
fs/nfs/nfs42proc.c

index 49f78e2..063e00a 100644 (file)
@@ -471,8 +471,9 @@ ssize_t nfs42_proc_copy(struct file *src, loff_t pos_src,
                                continue;
                        }
                        break;
-               } else if (err == -NFS4ERR_OFFLOAD_NO_REQS && !args.sync) {
-                       args.sync = true;
+               } else if (err == -NFS4ERR_OFFLOAD_NO_REQS &&
+                               args.sync != res.synchronous) {
+                       args.sync = res.synchronous;
                        dst_exception.retry = 1;
                        continue;
                } else if ((err == -ESTALE ||