From: Chuck Lever <chuck.lever@xxxxxxxxxx> We've discovered that delivering a CB_OFFLOAD operation can be unreliable in some pretty unremarkable situations, and the Linux NFS client does not yet support sending an OFFLOAD_STATUS operation to probe whether an asynchronous COPY operation has finished. On Linux NFS clients, COPY can hang until manually interrupted. I've tried a couple of remedies, but so far the side-effects are worse than the disease. For now, force COPY operations to be synchronous so that the use of CB_OFFLOAD is avoided entirely. I have some patches that add an OFFLOAD_STATUS implementation to the Linux NFS client, but that is not likely to fix older clients. Signed-off-by: Chuck Lever <chuck.lever@xxxxxxxxxx> --- fs/nfsd/nfs4proc.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c index ea3cc3e870a7..12722c709cc6 100644 --- a/fs/nfsd/nfs4proc.c +++ b/fs/nfsd/nfs4proc.c @@ -1807,6 +1807,13 @@ nfsd4_copy(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, __be32 status; struct nfsd4_copy *async_copy = NULL; + /* + * Currently, async COPY is not reliable. Force all COPY + * requests to be synchronous to avoid client application + * hangs waiting for completion. + */ + nfsd4_copy_set_sync(copy, true); + copy->cp_clp = cstate->clp; if (nfsd4_ssc_is_inter(copy)) { trace_nfsd_copy_inter(copy); base-commit: 939cb14d51a150e3c12ef7a8ce0ba04ce6131bd2 -- 2.44.0