]> git.baikalelectronics.ru Git - kernel.git/commitdiff
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)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 13 Sep 2023 07:42:49 +0000 (09:42 +0200)
[ Upstream commit 5690eed941ab7e33c3c3d6b850100cabf740f075 ]

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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
fs/nfs/nfs42proc.c

index 7c33bba179d2ffeccee63ae42e3f323cd4280684..d903ea10410c2b95ebc4caf8f1bfd3b3e5762aa2 100644 (file)
@@ -470,8 +470,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 ||