diff options
author | Chuck Lever <chuck.lever@oracle.com> | 2023-07-09 17:45:29 +0200 |
---|---|---|
committer | Chuck Lever <chuck.lever@oracle.com> | 2023-08-29 23:45:22 +0200 |
commit | a9507f6af1450ed26a4a36d979af518f5bb21e5d (patch) | |
tree | 0b910c2c4078479339537b098ae5d6c382f31fb3 /fs/nfsd/trace.h | |
parent | NFSD: Rename nfsd_reply_cache_alloc() (diff) | |
download | linux-a9507f6af1450ed26a4a36d979af518f5bb21e5d.tar.xz linux-a9507f6af1450ed26a4a36d979af518f5bb21e5d.zip |
NFSD: Replace nfsd_prune_bucket()
Enable nfsd_prune_bucket() to drop the bucket lock while calling
kfree(). Use the same pattern that Jeff recently introduced in the
NFSD filecache.
A few percpu operations are moved outside the lock since they
temporarily disable local IRQs which is expensive and does not
need to be done while the lock is held.
Reviewed-by: Jeff Layton <jlayton@kernel.org>
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Diffstat (limited to 'fs/nfsd/trace.h')
-rw-r--r-- | fs/nfsd/trace.h | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/fs/nfsd/trace.h b/fs/nfsd/trace.h index 693fe6d465aa..c48419c0a58a 100644 --- a/fs/nfsd/trace.h +++ b/fs/nfsd/trace.h @@ -1262,6 +1262,28 @@ TRACE_EVENT(nfsd_drc_mismatch, __entry->ingress) ); +TRACE_EVENT_CONDITION(nfsd_drc_gc, + TP_PROTO( + const struct nfsd_net *nn, + unsigned long freed + ), + TP_ARGS(nn, freed), + TP_CONDITION(freed > 0), + TP_STRUCT__entry( + __field(unsigned long long, boot_time) + __field(unsigned long, freed) + __field(int, total) + ), + TP_fast_assign( + __entry->boot_time = nn->boot_time; + __entry->freed = freed; + __entry->total = atomic_read(&nn->num_drc_entries); + ), + TP_printk("boot_time=%16llx total=%d freed=%lu", + __entry->boot_time, __entry->total, __entry->freed + ) +); + TRACE_EVENT(nfsd_cb_args, TP_PROTO( const struct nfs4_client *clp, |