kernel-fxtec-pro1x/fs/nfs
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
..
callback.c NFS: Change nfs_find_client() to take "struct sockaddr *" 2008-01-30 02:05:55 -05:00
callback.h NFS: Change cb_recallargs to pass "struct sockaddr *" instead of sockaddr_in 2008-01-30 02:05:55 -05:00
callback_proc.c NFS: Change nfs_find_client() to take "struct sockaddr *" 2008-01-30 02:05:55 -05:00
callback_xdr.c NFS: Change cb_recallargs to pass "struct sockaddr *" instead of sockaddr_in 2008-01-30 02:05:55 -05:00
client.c NFS: Invoke nlmclnt_init during NFS mount processing 2008-01-30 02:06:07 -05:00
delegation.c NFS: eliminate NIPQUAD(clp->cl_addr.sin_addr) 2008-01-30 02:05:52 -05:00
delegation.h NFSv4: Use RCU to protect delegations 2007-07-10 23:40:41 -04:00
dir.c NFS: define a function to update nfsi->cache_change_attribute 2008-01-30 02:05:47 -05:00
direct.c NFS/SUNRPC: Convert users of rpc_init_task+rpc_execute to rpc_run_task() 2008-01-30 02:05:39 -05:00
file.c NFS: nfs_write_end clean up 2008-01-30 02:06:02 -05:00
getroot.c NFS: Fix an Oops in NFS unmount 2007-12-12 11:12:15 -05:00
idmap.c NFS: Use size_t for storing name lengths 2008-01-30 02:06:01 -05:00
inode.c NFS: define a function to update nfsi->cache_change_attribute 2008-01-30 02:05:47 -05:00
internal.h NFS: Support non-IPv4 addresses in nfs_parsed_mount_data 2008-01-30 02:05:57 -05:00
iostat.h
Makefile [NFS] [PATCH] nfs: tiny makefile cleanup 2007-10-09 17:15:36 -04:00
mount_clnt.c NFS: Improve debugging output in NFS in-kernel mount client 2007-07-10 23:40:47 -04:00
namespace.c NFS: Remove the redundant nfs_client->cl_nfsversion 2008-01-30 02:05:49 -05:00
nfs2xdr.c NFS: Use unsigned intermediates for manipulating header lengths (NFSv2 XDR) 2008-01-30 02:05:44 -05:00
nfs3acl.c NFS: Remove nfs_begin_data_update/nfs_end_data_update 2007-10-09 17:19:53 -04:00
nfs3proc.c NLM/NFS: Use cached nlm_host when calling nlmclnt_proc() 2008-01-30 02:06:07 -05:00
nfs3xdr.c NFS: Use unsigned intermediates for manipulating header lengths (NFSv3 XDR) 2008-01-30 02:05:44 -05:00
nfs4_fs.h NFSv4: Give the lock stateid its own sequence queue 2008-01-10 13:35:32 -08:00
nfs4namespace.c NFS: Adjust nfs_clone_mount structure to store "struct sockaddr *" 2008-01-30 02:05:56 -05:00
nfs4proc.c NFSv4: Add socket proto argument to setclientid 2008-01-30 02:05:58 -05:00
nfs4renewd.c NFSv4: Fix circular locking dependency in nfs4_kill_renewd 2008-01-03 09:37:16 -05:00
nfs4state.c NFS: eliminate NIPQUAD(clp->cl_addr.sin_addr) 2008-01-30 02:05:52 -05:00
nfs4xdr.c NFS: Ensure NFSv4 SETCLIENTID send buffer is large enough 2008-01-30 02:05:51 -05:00
nfsroot.c Convert files to UTF-8 and some cleanups 2007-10-19 23:21:04 +02:00
pagelist.c NFS: Clean up the write request locking. 2008-01-30 02:05:24 -05:00
proc.c NLM/NFS: Use cached nlm_host when calling nlmclnt_proc() 2008-01-30 02:06:07 -05:00
read.c NFS/SUNRPC: Convert users of rpc_init_task+rpc_execute to rpc_run_task() 2008-01-30 02:05:39 -05:00
super.c NFS: Support per-mountpoint timeout parameters. 2008-01-30 02:05:59 -05:00
symlink.c
sysctl.c
unlink.c NFS/SUNRPC: Convert all users of rpc_call_setup() 2008-01-30 02:05:32 -05:00
write.c NFS: Fix minor mixed sign comparison in NFS client's write logic 2008-01-30 02:06:01 -05:00