Commit 47305153 authored by Tigran Mkrtchyan's avatar Tigran Mkrtchyan Committed by Anna Schumaker
Browse files

nfs42: do not fail with EIO if ssc returns NFS4ERR_OFFLOAD_DENIED



The NFSv4.2 server even if supports intra-SSC might prefer that for
a particular file a classic copy is performed. As returning ENOTSUPP
will clear the SSC capability of the server by the client, server
might return NFS4ERR_OFFLOAD_DENIED (well, spec talks about remote
servers there).

Update nfs42_proc_copy to handle NFS4ERR_OFFLOAD_DENIED as ENOTSUPP,
but without clearing NFS_CAP_COPY bit.

Signed-off-by: default avatarTigran Mkrtchyan <tigran.mkrtchyan@desy.de>
Signed-off-by: default avatarAnna Schumaker <Anna.Schumaker@Netapp.com>
parent 5bab56ff
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -460,7 +460,8 @@ ssize_t nfs42_proc_copy(struct file *src, loff_t pos_src,

		if (err >= 0)
			break;
		if (err == -ENOTSUPP &&
		if ((err == -ENOTSUPP ||
				err == -NFS4ERR_OFFLOAD_DENIED) &&
				nfs42_files_from_same_server(src, dst)) {
			err = -EOPNOTSUPP;
			break;