> On Nov 17, 2022, at 1:43 PM, Dai Ngo <dai.ngo@xxxxxxxxxx> wrote: > > > On 11/17/22 9:04 AM, Chuck Lever III wrote: >> >>> On Nov 17, 2022, at 11:53 AM, Dai Ngo <dai.ngo@xxxxxxxxxx> wrote: >>> >>> >>> On 11/17/22 6:44 AM, Chuck Lever III wrote: >>>>> On Nov 16, 2022, at 10:44 PM, Dai Ngo <dai.ngo@xxxxxxxxxx> wrote: >>>>> >>>>> This patch series adds: >>>>> >>>>> . refactor courtesy_client_reaper to a generic low memory >>>>> shrinker. >>>>> >>>>> . XDR encode and decode function for CB_RECALL_ANY op. >>>>> >>>>> . the delegation reaper that sends the advisory CB_RECALL_ANY >>>>> to the clients to release unused delegations. >>>>> There is only one nfsd4_callback added for each nfs4_cleint. >>>>> Access to it must be serialized via the client flag >>>>> NFSD4_CLIENT_CB_RECALL_ANY. >>>>> >>>>> . Add CB_RECALL_ANY tracepoints. >>>>> >>>>> v2: >>>>> . modify deleg_reaper to check and send CB_RECALL_ANY to client >>>>> only once per 5 secs. >>>>> v3: >>>>> . modify nfsd4_cb_recall_any_release to use nn->client_lock to >>>>> protect cl_recall_any_busy and call put_client_renew_locked >>>>> to decrement cl_rpc_users. >>>>> >>>>> v4: >>>>> . move changes in nfs4state.c from patch (1/2) to patch(2/2). >>>>> . use xdr_stream_encode_u32 and xdr_stream_encode_uint32_array >>>>> to encode CB_RECALL_ANY arguments. >>>>> . add struct nfsd4_cb_recall_any with embedded nfs4_callback >>>>> and params for CB_RECALL_ANY op. >>>>> . replace cl_recall_any_busy boolean with client flag >>>>> NFSD4_CLIENT_CB_RECALL_ANY >>>>> . add tracepoints for CB_RECALL_ANY >>>>> >>>>> v5: >>>>> . refactor courtesy_client_reaper to a generic low memory >>>>> shrinker >>>>> . merge courtesy client shrinker and delegtion shrinker into >>>>> one. >>>>> . reposition nfsd_cb_recall_any and nfsd_cb_recall_any_done >>>>> in nfsd/trace.h >>>>> . use __get_sockaddr to display server IP address in >>>>> tracepoints. >>>>> . modify encode_cb_recallany4args to replace sizeof with >>>>> ARRAY_SIZE. >>>> Hi- >>>> >>>> I'm going to apply this version of the series with some minor >>>> changes. I'll reply to the individual patches where we can >>>> discuss those. >>> Thank you Chuck! >> Changes folded in and pushed to nfsd's for-next. For the trace >> point patch, I've rebased your series on top of the patch that >> relocates include/trace/events/nfs.h so that the new >> show_rca_mask() macro can go in the common nfs.h instead of >> the NFSD-specific fs/nfsd/trace.h. >> >> Feel free to pull and test to make sure I didn't do anything >> bone-headed. > > I removed the get_sockaddr temporarily to test show_rca_mask. > It works fine: > > [root@nfsvmf24 ~]# trace-cmd report > trace-cmd: No such file or directory > Error: expected type 4 but read 5 > cpus=1 > kworker/u2:6-2297 [000] 1349.863391: nfsd_cb_recall_any: client 63767ac9:adb1a3fb keep=0 bmval0=RDATA_DLG > kworker/u2:0-8698 [000] 1349.869652: nfsd_cb_recall_any_done: client 63767ac9:adb1a3fb status=0 Perfect, thank you! -- Chuck Lever