On Tue, Nov 30, 2021 at 07:52:10PM -0800, dai.ngo@xxxxxxxxxx wrote: > On 11/30/21 5:37 AM, Trond Myklebust wrote: > >Then kick off a thread or work item to do that asynchronously in the > >background, and return NFS4ERR_DELAY to the clients that were trying to > >grab locks in the meantime. > > Thanks Trond, I think this is a reasonable approach. The behavior would > be similar to a delegation recall during the OPEN. > > My plan is: > > 1. If the number of conflict clients is less than 100 (some numbers that > cover realistic usage) then release all their state synchronously in > the OPEN call, and returns NFS4_OK to the NFS client. Most of conflicts > should be handled by this case. > > 2. If the number of conflict clients is more than 100 then release the > state of the 1st 100 clients as in (1) and trigger the laundromat thread > to release state of the rest of the conflict clients, and return > NFS4ERR_DELAY to the NFS client. This should be a rare condition. Honestly, conflict with a courtesy client is itself not going to be that common, so personally I'd start simple and handle everything with the asynchronous approach. --b.