Commit add1511c authored by Chuck Lever's avatar Chuck Lever

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: default avatarChuck Lever <chuck.lever@oracle.com>
parent 0f29ce32
...@@ -448,11 +448,8 @@ int nfsd_cache_lookup(struct svc_rqst *rqstp) ...@@ -448,11 +448,8 @@ int nfsd_cache_lookup(struct svc_rqst *rqstp)
b = nfsd_cache_bucket_find(rqstp->rq_xid, nn); b = nfsd_cache_bucket_find(rqstp->rq_xid, nn);
spin_lock(&b->cache_lock); spin_lock(&b->cache_lock);
found = nfsd_cache_insert(b, rp, nn); found = nfsd_cache_insert(b, rp, nn);
if (found != rp) { if (found != rp)
nfsd_reply_cache_free_locked(NULL, rp, nn);
rp = found;
goto found_entry; goto found_entry;
}
nfsd_stats_rc_misses_inc(); nfsd_stats_rc_misses_inc();
rqstp->rq_cacherep = rp; rqstp->rq_cacherep = rp;
...@@ -470,8 +467,10 @@ int nfsd_cache_lookup(struct svc_rqst *rqstp) ...@@ -470,8 +467,10 @@ int nfsd_cache_lookup(struct svc_rqst *rqstp)
found_entry: found_entry:
/* We found a matching entry which is either in progress or done. */ /* 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(); nfsd_stats_rc_hits_inc();
rtn = RC_DROPIT; rtn = RC_DROPIT;
rp = found;
/* Request being processed */ /* Request being processed */
if (rp->c_state == RC_INPROG) if (rp->c_state == RC_INPROG)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment