mbox series

[0/8] Reduce the refcount pressure of NFS on struct cred

Message ID 20200210191345.557460-1-trond.myklebust@hammerspace.com (mailing list archive)
Headers show
Series Reduce the refcount pressure of NFS on struct cred | expand

Message

Trond Myklebust Feb. 10, 2020, 7:13 p.m. UTC
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(-)