Thread (15 messages) 15 messages, 2 authors, 2022-11-17

Re: [PATCH v5 0/4] add support for CB_RECALL_ANY and the delegation reaper

From: Chuck Lever III <chuck.lever@oracle.com>
Date: 2022-11-17 18:45:11

On Nov 17, 2022, at 1:43 PM, Dai Ngo [off-list ref] wrote:


On 11/17/22 9:04 AM, Chuck Lever III wrote:
quoted
quoted
On Nov 17, 2022, at 11:53 AM, Dai Ngo [off-list ref] wrote:


On 11/17/22 6:44 AM, Chuck Lever III wrote:
quoted
quoted
On Nov 16, 2022, at 10:44 PM, Dai Ngo [off-list ref] 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


Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help