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
..
2007-10-17 08:42:47 -07:00
2008-01-28 23:58:27 -05:00
2007-10-19 11:53:37 -07:00
2007-12-05 09:25:20 -08:00
2008-01-25 10:12:41 +00:00
2007-05-08 11:14:59 -07:00
2007-10-22 08:13:21 -07:00
2008-01-17 15:38:58 -08:00
2007-10-16 09:43:07 -07:00
2008-01-24 16:13:21 -06:00
2007-10-18 14:37:31 -07:00
2007-11-03 12:27:21 -07:00
2008-01-28 15:01:36 -08:00
2008-01-28 23:14:37 +01:00
2007-12-05 09:21:18 -08:00
2008-01-11 18:05:04 +11:00
2008-01-07 14:55:37 -08:00
2007-10-17 08:42:54 -07:00
2008-01-28 23:21:18 +01:00
2007-07-29 17:09:29 -07:00
2007-10-16 09:42:53 -07:00
2007-05-18 13:09:34 -07:00
2007-11-28 10:58:01 -08:00
2007-05-21 09:18:19 -07:00
2007-05-08 11:15:01 -07:00
2007-05-08 11:15:09 -07:00
2007-07-16 09:05:48 -07:00
2008-01-28 23:58:27 -05:00
2007-10-22 08:13:19 -07:00
2007-10-16 09:42:54 -07:00
2007-07-19 10:04:45 -07:00
2007-11-14 18:45:42 -08:00
2007-10-15 17:00:19 +02:00
2007-07-27 15:40:13 -07:00
2007-10-19 11:53:41 -07:00
2007-10-17 08:43:01 -07:00
2007-10-17 08:42:52 -07:00