The NFS and RPC layer currently always takes a reference to the
credential passed by the user, even in the case where the RPC call
is synchronous, or the cred is also being pinned by file pointers
and open contexts.
In addition, the access cache will take a reference for each cache entry
on each file that we've looked up.
This patch set attempts to reduce the amount of references that the NFS
layer holds, by optimising away a few cases where we're taking the
refcount unnecessarily. It also sets a more stringent limit on the
number of access cache entries that the NFS layer holds.
Trond Myklebust (8):
NFS: alloc_nfs_open_context() must use the file cred when available
SUNRPC: Add a flag to avoid reference counts on credentials
SUNRPC: Don't take a reference to the cred on synchronous tasks
NFS: Assume cred is pinned by open context in I/O requests
NFSv4: Avoid referencing the cred unnecessarily during NFSv4 I/O
NFSv4: Avoid unnecessary credential references in layoutget
NFS: Avoid referencing the cred twice in async rename/unlink
NFS: Limit the size of the access cache by default
fs/nfs/dir.c | 2 +-
fs/nfs/inode.c | 10 +++++-----
fs/nfs/nfs4proc.c | 12 ++++++------
fs/nfs/pagelist.c | 2 +-
fs/nfs/pnfs.c | 3 +--
fs/nfs/unlink.c | 4 ++--
fs/nfs/write.c | 2 +-
include/linux/sunrpc/sched.h | 1 +
net/sunrpc/clnt.c | 8 ++++++--
net/sunrpc/sched.c | 3 ++-
10 files changed, 26 insertions(+), 21 deletions(-)
--
2.24.1