summaryrefslogtreecommitdiff
path: root/fs/nfsd/nfscache.c
diff options
context:
space:
mode:
authorChuck Lever <chuck.lever@oracle.com>2021-09-28 11:39:02 -0400
committerChuck Lever <chuck.lever@oracle.com>2022-02-28 10:26:38 -0500
commit0f29ce32fbc56cfdb304eec8a4deb920ccfd89c3 (patch)
tree936a35c8d651b07dc99444f3e916588599af9af5 /fs/nfsd/nfscache.c
parent378a6109dd142a678f629b740f558365150f60f9 (diff)
downloadlwn-0f29ce32fbc56cfdb304eec8a4deb920ccfd89c3.tar.gz
lwn-0f29ce32fbc56cfdb304eec8a4deb920ccfd89c3.zip
NFSD: Skip extra computation for RC_NOCACHE case
Force the compiler to skip unneeded initialization for cases that don't need those values. For example, NFSv4 COMPOUND operations are RC_NOCACHE. Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Diffstat (limited to 'fs/nfsd/nfscache.c')
-rw-r--r--fs/nfsd/nfscache.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/fs/nfsd/nfscache.c b/fs/nfsd/nfscache.c
index f79790d36728..34087a7e4f93 100644
--- a/fs/nfsd/nfscache.c
+++ b/fs/nfsd/nfscache.c
@@ -421,10 +421,10 @@ out:
*/
int nfsd_cache_lookup(struct svc_rqst *rqstp)
{
- struct nfsd_net *nn = net_generic(SVC_NET(rqstp), nfsd_net_id);
+ struct nfsd_net *nn;
struct svc_cacherep *rp, *found;
__wsum csum;
- struct nfsd_drc_bucket *b = nfsd_cache_bucket_find(rqstp->rq_xid, nn);
+ struct nfsd_drc_bucket *b;
int type = rqstp->rq_cachetype;
int rtn = RC_DOIT;
@@ -440,10 +440,12 @@ int nfsd_cache_lookup(struct svc_rqst *rqstp)
* Since the common case is a cache miss followed by an insert,
* preallocate an entry.
*/
+ nn = net_generic(SVC_NET(rqstp), nfsd_net_id);
rp = nfsd_reply_cache_alloc(rqstp, csum, nn);
if (!rp)
goto out;
+ b = nfsd_cache_bucket_find(rqstp->rq_xid, nn);
spin_lock(&b->cache_lock);
found = nfsd_cache_insert(b, rp, nn);
if (found != rp) {