On Mon, Jun 28, 2021 at 04:23:31PM -0400, J. Bruce Fields wrote: > On Thu, Jun 03, 2021 at 02:14:38PM -0400, Dai Ngo wrote: > > @@ -6875,7 +6947,12 @@ nfsd4_lock(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, > > case -EAGAIN: /* conflock holds conflicting lock */ > > status = nfserr_denied; > > dprintk("NFSD: nfsd4_lock: conflicting lock found!\n"); > > - nfs4_set_lock_denied(conflock, &lock->lk_denied); > > + > > + /* try again if conflict with courtesy client */ > > + if (nfs4_set_lock_denied(conflock, &lock->lk_denied) == -EAGAIN && !retried) { > > + retried = true; > > + goto again; > > + } > > Ugh, apologies, this was my idea, but I just noticed it only handles > conflicts from other NFSv4 clients. (Oh, and I only just *now* noticed that you'd already pointed out that problem in an email I apparently stopped reading after the first paragraph: https://lore.kernel.org/linux-nfs/c983218b-d270-bbae-71c5-b591bfbce473@xxxxxxxxxx/ Sorry!) --b.