diff options
author | Chuck Lever <chuck.lever@oracle.com> | 2021-09-28 11:40:59 -0400 |
---|---|---|
committer | Chuck Lever <chuck.lever@oracle.com> | 2022-02-28 10:26:38 -0500 |
commit | add1511c38166cf1036765f8c4aa939f0275a799 (patch) | |
tree | 6ae3d0b9d71e1e9e54851cf5d1e1e99844ce5c94 /fs/nfsd | |
parent | 0f29ce32fbc56cfdb304eec8a4deb920ccfd89c3 (diff) | |
download | linux-add1511c38166cf1036765f8c4aa939f0275a799.tar.gz linux-add1511c38166cf1036765f8c4aa939f0275a799.tar.bz2 linux-add1511c38166cf1036765f8c4aa939f0275a799.zip |
NFSD: Streamline the rare "found" case
Move a rarely called function call site out of the hot path.
This is an exceptionally small improvement because the compiler
inlines most of the functions that nfsd_cache_lookup() calls.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Diffstat (limited to 'fs/nfsd')
-rw-r--r-- | fs/nfsd/nfscache.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/fs/nfsd/nfscache.c b/fs/nfsd/nfscache.c index 34087a7e4f93..0b3f12aa37ff 100644 --- a/fs/nfsd/nfscache.c +++ b/fs/nfsd/nfscache.c @@ -448,11 +448,8 @@ int nfsd_cache_lookup(struct svc_rqst *rqstp) b = nfsd_cache_bucket_find(rqstp->rq_xid, nn); spin_lock(&b->cache_lock); found = nfsd_cache_insert(b, rp, nn); - if (found != rp) { - nfsd_reply_cache_free_locked(NULL, rp, nn); - rp = found; + if (found != rp) goto found_entry; - } nfsd_stats_rc_misses_inc(); rqstp->rq_cacherep = rp; @@ -470,8 +467,10 @@ out: found_entry: /* We found a matching entry which is either in progress or done. */ + nfsd_reply_cache_free_locked(NULL, rp, nn); nfsd_stats_rc_hits_inc(); rtn = RC_DROPIT; + rp = found; /* Request being processed */ if (rp->c_state == RC_INPROG) |