aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nfsd/nfs4state.c
diff options
context:
space:
mode:
authorAndy Adamson <andros@netapp.com>2009-06-24 15:37:45 -0400
committerJ. Bruce Fields <bfields@citi.umich.edu>2009-07-14 17:52:40 -0400
commit4bd9b0f4afc76cf972578c702e1bc1b6f2d10ba5 (patch)
treeec7289f1c24ef1ff75c2fdd3cfb2c7ef66f8c44d /fs/nfsd/nfs4state.c
parent7702ce40bc84a02e88aa20f95333df8cff5f9d37 (diff)
nfsd41: use globals for DRC limits
The version 4.1 DRC memory limit and tracking variables are server wide and session specific. Replace struct svc_serv fields with globals. Stop using the svc_serv sv_lock. Add a spinlock to serialize access to the DRC limit management variables which change on session creation and deletion (usage counter) or (future) administrative action to adjust the total DRC memory limit. Signed-off-by: Andy Adamson <andros@netapp.com> Signed-off-by: Benny Halevy <bhalevy@panasas.com>
Diffstat (limited to 'fs/nfsd/nfs4state.c')
-rw-r--r--fs/nfsd/nfs4state.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c
index 980a216a48c8..2e6a44e3d2fe 100644
--- a/fs/nfsd/nfs4state.c
+++ b/fs/nfsd/nfs4state.c
@@ -430,11 +430,11 @@ static int set_forechannel_maxreqs(struct nfsd4_channel_attrs *fchan)
430 else if (fchan->maxreqs > NFSD_MAX_SLOTS_PER_SESSION) 430 else if (fchan->maxreqs > NFSD_MAX_SLOTS_PER_SESSION)
431 fchan->maxreqs = NFSD_MAX_SLOTS_PER_SESSION; 431 fchan->maxreqs = NFSD_MAX_SLOTS_PER_SESSION;
432 432
433 spin_lock(&nfsd_serv->sv_lock); 433 spin_lock(&nfsd_drc_lock);
434 if (np + nfsd_serv->sv_drc_pages_used > nfsd_serv->sv_drc_max_pages) 434 if (np + nfsd_drc_pages_used > nfsd_drc_max_pages)
435 np = nfsd_serv->sv_drc_max_pages - nfsd_serv->sv_drc_pages_used; 435 np = nfsd_drc_max_pages - nfsd_drc_pages_used;
436 nfsd_serv->sv_drc_pages_used += np; 436 nfsd_drc_pages_used += np;
437 spin_unlock(&nfsd_serv->sv_lock); 437 spin_unlock(&nfsd_drc_lock);
438 438
439 if (np <= 0) { 439 if (np <= 0) {
440 status = nfserr_resource; 440 status = nfserr_resource;