aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nfsd
diff options
context:
space:
mode:
Diffstat (limited to 'fs/nfsd')
-rw-r--r--fs/nfsd/nfscache.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/fs/nfsd/nfscache.c b/fs/nfsd/nfscache.c
index 40db57eb2b06..2f9c2d26a2b9 100644
--- a/fs/nfsd/nfscache.c
+++ b/fs/nfsd/nfscache.c
@@ -302,8 +302,10 @@ nfsd_cache_search(struct svc_rqst *rqstp, __wsum csum)
302 302
303/* 303/*
304 * Try to find an entry matching the current call in the cache. When none 304 * Try to find an entry matching the current call in the cache. When none
305 * is found, we grab the oldest unlocked entry off the LRU list. 305 * is found, we try to grab the oldest expired entry off the LRU list. If
306 * Note that no operation within the loop may sleep. 306 * a suitable one isn't there, then drop the cache_lock and allocate a
307 * new one, then search again in case one got inserted while this thread
308 * didn't hold the lock.
307 */ 309 */
308int 310int
309nfsd_cache_lookup(struct svc_rqst *rqstp) 311nfsd_cache_lookup(struct svc_rqst *rqstp)
@@ -344,6 +346,7 @@ nfsd_cache_lookup(struct svc_rqst *rqstp)
344 } 346 }
345 } 347 }
346 348
349 /* Drop the lock and allocate a new entry */
347 spin_unlock(&cache_lock); 350 spin_unlock(&cache_lock);
348 rp = nfsd_reply_cache_alloc(); 351 rp = nfsd_reply_cache_alloc();
349 if (!rp) { 352 if (!rp) {