linux/fs/lockd
Chuck Lever 1093a60ef3 NLM/NFS: Use cached nlm_host when calling nlmclnt_proc()
Now that each NFS mount point caches its own nlm_host structure, it can be
passed to nlmclnt_proc() for each lock request.  By pinning an nlm_host for
each mount point, we trade the overhead of looking up or creating a fresh
nlm_host struct during every NLM procedure call for a little extra memory.

We also restrict the nlmclnt_proc symbol to limit the use of this call to
in-tree modules.

Note that nlm_lookup_host() (just removed from the client's per-request
NLM processing) could also trigger an nlm_host garbage collection.  Now
client-side nlm_host garbage collection occurs only during NFS mount
processing.  Since the NFS client now holds a reference on these nlm_host
structures, they wouldn't have been affected by garbage collection
anyway.

Given that nlm_lookup_host() reorders the global nlm_host chain after
every successful lookup, and that a garbage collection could be triggered
during the call, we've removed a significant amount of per-NLM-request
CPU processing overhead.

Sidebar: there are only a few remaining references to the internals of
NFS inodes in the client-side NLM code.  The only references I found are
related to extracting or comparing the inode's file handle via NFS_FH().
One is in nlmclnt_grant(); the other is in nlmclnt_setlockargs().

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
2008-01-30 02:06:07 -05:00
..
clntlock.c NLM: Introduce external nlm_host set-up and tear-down functions 2008-01-30 02:06:06 -05:00
clntproc.c NLM/NFS: Use cached nlm_host when calling nlmclnt_proc() 2008-01-30 02:06:07 -05:00
host.c NLM: fix source address of callback to client 2007-07-10 23:40:49 -04:00
Makefile Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
mon.c NFS/SUNRPC: use transport protocol naming 2007-10-09 17:17:53 -04:00
svc4proc.c lockd: add code to handle deferred lock requests 2007-05-06 20:38:50 -04:00
svc.c knfsd: lockd: nfsd4: use same grace period for lockd and nfsd4 2007-07-17 10:23:07 -07:00
svclock.c NLM: Fix a memory leak in nlmsvc_testlock 2007-10-09 12:38:26 -07:00
svcproc.c lockd: add code to handle deferred lock requests 2007-05-06 20:38:50 -04:00
svcshare.c [PATCH] getting rid of all casts of k[cmz]alloc() calls 2006-12-13 09:05:58 -08:00
svcsubs.c lockd: add code to handle deferred lock requests 2007-05-06 20:38:50 -04:00
xdr4.c LOCKD: Convert printk's to dprintk's in lockd XDR routines 2007-10-09 17:17:12 -04:00
xdr.c lockd: Eliminate harmless mixed sign comparison in nlmdbg_cookie2a() 2008-01-30 02:06:02 -05:00