summaryrefslogtreecommitdiff
path: root/fs/nfs
diff options
context:
space:
mode:
authorOlga Kornievskaia <kolga@netapp.com>2018-07-09 22:13:35 +0300
committerAnna Schumaker <Anna.Schumaker@Netapp.com>2018-08-09 19:56:39 +0300
commit539f57b3e0fdaad20ddb0a45913cefee0c8c29c1 (patch)
treee2c0b7e9947b1bff08da46710bd09ce89f0dc10c /fs/nfs
parentc975c20926575e5968c617ec437647b2f9d87532 (diff)
downloadlinux-539f57b3e0fdaad20ddb0a45913cefee0c8c29c1.tar.xz
NFS handle COPY ERR_OFFLOAD_NO_REQS
If client sent async COPY and server replied with ERR_OFFLOAD_NO_REQS, client should retry with a synchronous copy. Signed-off-by: Olga Kornievskaia <kolga@netapp.com> Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
Diffstat (limited to 'fs/nfs')
-rw-r--r--fs/nfs/nfs42proc.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/fs/nfs/nfs42proc.c b/fs/nfs/nfs42proc.c
index aeb9837b7e40..77451be9d702 100644
--- a/fs/nfs/nfs42proc.c
+++ b/fs/nfs/nfs42proc.c
@@ -316,7 +316,11 @@ ssize_t nfs42_proc_copy(struct file *src, loff_t pos_src,
if (err == -ENOTSUPP) {
err = -EOPNOTSUPP;
break;
- } if (err == -EAGAIN) {
+ } else if (err == -EAGAIN) {
+ dst_exception.retry = 1;
+ continue;
+ } else if (err == -NFS4ERR_OFFLOAD_NO_REQS && !args.sync) {
+ args.sync = true;
dst_exception.retry = 1;
continue;
}