Re: [PATCH RFC 1/1] nfsd: Initial implementation of NFSv4 Courteous Server

J. Bruce Fields
2021-06-30T15:13:03Z

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@oracle.com/

Sorry!)

--b.