aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nfsd/nfssvc.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/nfsd/nfssvc.c')
-rw-r--r--fs/nfsd/nfssvc.c23
1 files changed, 16 insertions, 7 deletions
diff --git a/fs/nfsd/nfssvc.c b/fs/nfsd/nfssvc.c
index 492c79b7800b..d68cd056b281 100644
--- a/fs/nfsd/nfssvc.c
+++ b/fs/nfsd/nfssvc.c
@@ -66,6 +66,16 @@ struct timeval nfssvc_boot;
66DEFINE_MUTEX(nfsd_mutex); 66DEFINE_MUTEX(nfsd_mutex);
67struct svc_serv *nfsd_serv; 67struct svc_serv *nfsd_serv;
68 68
69/*
70 * nfsd_drc_lock protects nfsd_drc_max_pages and nfsd_drc_pages_used.
71 * nfsd_drc_max_pages limits the total amount of memory available for
72 * version 4.1 DRC caches.
73 * nfsd_drc_pages_used tracks the current version 4.1 DRC memory usage.
74 */
75spinlock_t nfsd_drc_lock;
76unsigned int nfsd_drc_max_mem;
77unsigned int nfsd_drc_mem_used;
78
69#if defined(CONFIG_NFSD_V2_ACL) || defined(CONFIG_NFSD_V3_ACL) 79#if defined(CONFIG_NFSD_V2_ACL) || defined(CONFIG_NFSD_V3_ACL)
70static struct svc_stat nfsd_acl_svcstats; 80static struct svc_stat nfsd_acl_svcstats;
71static struct svc_version * nfsd_acl_version[] = { 81static struct svc_version * nfsd_acl_version[] = {
@@ -235,13 +245,12 @@ void nfsd_reset_versions(void)
235 */ 245 */
236static void set_max_drc(void) 246static void set_max_drc(void)
237{ 247{
238 /* The percent of nr_free_buffer_pages used by the V4.1 server DRC */ 248 #define NFSD_DRC_SIZE_SHIFT 10
239 #define NFSD_DRC_SIZE_SHIFT 7 249 nfsd_drc_max_mem = (nr_free_buffer_pages()
240 nfsd_serv->sv_drc_max_pages = nr_free_buffer_pages() 250 >> NFSD_DRC_SIZE_SHIFT) * PAGE_SIZE;
241 >> NFSD_DRC_SIZE_SHIFT; 251 nfsd_drc_mem_used = 0;
242 nfsd_serv->sv_drc_pages_used = 0; 252 spin_lock_init(&nfsd_drc_lock);
243 dprintk("%s svc_drc_max_pages %u\n", __func__, 253 dprintk("%s nfsd_drc_max_mem %u \n", __func__, nfsd_drc_max_mem);
244 nfsd_serv->sv_drc_max_pages);
245} 254}
246 255
247int nfsd_create_serv(void) 256int nfsd_create_serv(void)