Return-Path: Received: from mx144.netapp.com ([216.240.21.25]:31185 "EHLO mx144.netapp.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S934050AbdGKQou (ORCPT ); Tue, 11 Jul 2017 12:44:50 -0400 From: Olga Kornievskaia To: , , CC: Subject: [RFC v3 22/42] NFS for "inter" copy treat ESTALE as ENOTSUPP Date: Tue, 11 Jul 2017 12:43:56 -0400 Message-ID: <20170711164416.1982-23-kolga@netapp.com> In-Reply-To: <20170711164416.1982-1-kolga@netapp.com> References: <20170711164416.1982-1-kolga@netapp.com> MIME-Version: 1.0 Content-Type: text/plain Sender: linux-nfs-owner@vger.kernel.org List-ID: If the client sends an "inter" copy to the destination server but it only supports "intra" copy, it can return ESTALE (since it doesn't know anything about the file handle from the other server and does not recognize the special case of "inter" copy). Translate this error as ENOTSUPP and also send OFFLOAD_CANCEL to teh source server so that it can clean up state. Signed-off-by: Olga Kornievskaia --- fs/nfs/nfs42proc.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/fs/nfs/nfs42proc.c b/fs/nfs/nfs42proc.c index b7c08a9..09f653d 100644 --- a/fs/nfs/nfs42proc.c +++ b/fs/nfs/nfs42proc.c @@ -358,6 +358,13 @@ ssize_t nfs42_proc_copy(struct file *src, loff_t pos_src, continue; } break; + case -ESTALE: + if (!nfs42_files_from_same_server(src, dst)) { + err = -ENOTSUPP; + nfs42_do_offload_cancel_async(src, + &args.src_stateid); + } + break; case -ENOTSUPP: server->caps &= ~NFS_CAP_COPY; if (nfs42_files_from_same_server(src, dst)) -- 1.8.3.1