> On Oct 18, 2022, at 9:25 AM, Tom Talpey <tom@xxxxxxxxxx> wrote: > > On 10/18/2022 1:15 AM, Dai Ngo wrote: >> There is only one nfsd4_callback, cl_recall_any, added for each >> nfs4_client. Access to it must be serialized. For now it's done >> by the cl_recall_any_busy flag since it's used only by the >> delegation shrinker. If there is another consumer of CB_RECALL_ANY >> then a spinlock must be used. > > I'm curious if clients have shown any quirks with the operation in > your testing. If the (Linux) server hasn't ever been sending it, > then I'd expect some possible issues/quirks in the client. Is Linux NFSD the first implementation of CB_RECALL_ANY? If other servers already have this capability, I would expect clients to work adequately. Of course, if the community doesn't have any unit tests for CB_RECALL_ANY... "what's not tested is broken" -- Brian Wong. > For example, do they really start handing back a significant number > of useful delegations? Enough to satisfy the server's need without > going to specific resource-based recalls? I don't think of CB_RECALL_ANY as heroic, it's more of a hint. So if a client doesn't return anything, that's not really a problem -- NFSD is not relying on it, and it certainly does take some time before server-side state resources are eventually released. Another possible use case is for the server to start sending CB_RECALL_ANY when a client hits the max per-client delegation limit. -- Chuck Lever