[GIT PULL] Please pull NFS server updates for 5.7

From: Chuck Lever
Date: Fri Apr 03 2020 - 10:09:32 EST


Hi Linus,

I'm filling in for Bruce this time while he and his family settle
into a new house.


The following changes since commit fb33c6510d5595144d585aa194d377cf74d31911:

Linux 5.6-rc6 (2020-03-15 15:01:23 -0700)

are available in the Git repository at:

git://git.linux-nfs.org/projects/cel/cel-2.6.git tags/nfsd-5.7

for you to fetch changes up to 1a33d8a284b1e85e03b8c7b1ea8fb985fccd1d71:

svcrdma: Fix leak of transport addresses (2020-03-27 12:25:06 -0400)

----------------------------------------------------------------
Highlights:

- Fix EXCHANGE_ID response when NFSD runs in a container
- A battery of new static trace points
- Socket transports now use bio_vec to send Replies
- NFS/RDMA now supports filesystems with no .splice_read method
- Favor memcpy() over DMA mapping for small RPC/RDMA Replies
- Add pre-requisites for supporting multiple Write chunks
- Numerous minor fixes and clean-ups

There are a few open issues that did not reach closure before I cut
the nfsd-5.7 tag:

- Vasily Averin has addressed a use-after-free in nfsd4_lock()
- Yihao Wu is investigating a race in cache_purge()
- Jan Psota reports a refcount underflow warning in nfsd41_cb_destroy()

These are long-standing bugs. I plan to send follow-up PRs for
v5.7-rc when these issues are resolved and their fixes thoroughly
tested.

----------------------------------------------------------------

Amol Grover (1):
sunrpc: Pass lockdep expression to RCU lists

Christophe JAILLET (1):
SUNRPC: Fix a potential buffer overflow in 'svc_print_xprts()'

Chuck Lever (21):
nfsd: Fix NFSv4 READ on RDMA when using readv
NFSD: Clean up nfsd4_encode_readv
svcrdma: Fix double svc_rdma_send_ctxt_put() in an error path
SUNRPC: Add xdr_pad_size() helper
SUNRPC: Clean up: Replace dprintk and BUG_ON call sites in svcauth_gss.c
svcrdma: Create a generic tracing class for displaying xdr_buf layout
svcrdma: Remove svcrdma_cm_event() trace point
svcrdma: Use struct xdr_stream to decode ingress transport headers
svcrdma: De-duplicate code that locates Write and Reply chunks
svcrdma: Update synopsis of svc_rdma_send_reply_chunk()
svcrdma: Update synopsis of svc_rdma_map_reply_msg()
svcrdma: Update synopsis of svc_rdma_send_reply_msg()
svcrdma: Rename svcrdma_encode trace points in send routines
SUNRPC: Add encoders for list item discriminators
svcrdma: Refactor chunk list encoders
svcrdma: Fix double sync of transport header buffer
svcrdma: Avoid DMA mapping small RPC Replies
SUNRPC: Refactor xs_sendpages()
SUNRPC: Teach server to use xprt_sock_sendmsg for socket sends
NFSD: Fix NFS server build errors
svcrdma: Fix leak of transport addresses

Gustavo A. R. Silva (2):
sunrpc: Replace zero-length array with flexible-array member
svcrdma: Replace zero-length array with flexible-array member

J. Bruce Fields (3):
nfsd4: kill warnings on testing stateids with mismatched clientids
nfsd: fsnotify on rmdir under nfsd/clients/
SUNRPC/cache: don't allow invalid entries to be flushed

Madhuparna Bhowmik (2):
fs: nfsd: nfs4state.c: Use built-in RCU list checking
fs: nfsd: fileache.c: Use built-in RCU list checking

Petr Vorel (1):
nfsd: remove read permission bit for ctl sysctl

Scott Mayhew (1):
nfsd: set the server_scope during service startup

Trond Myklebust (7):
nfsd: Don't add locks to closed or closing open stateids
nfsd: Add tracing to nfsd_set_fh_dentry()
nfsd: Add tracepoints for exp_find_key() and exp_get_by_name()
nfsd: Add tracepoints for update of the expkey and export cache entries
nfsd: export upcalls must not return ESTALE when mountd is down
SUNRPC/cache: Allow garbage collection of invalid cache entries
sunrpc: Add tracing for cache events

fs/nfs/dns_resolve.c | 11 +-
fs/nfsd/Kconfig | 2 +-
fs/nfsd/export.c | 45 +++++++--
fs/nfsd/filecache.c | 2 +-
fs/nfsd/netns.h | 2 +
fs/nfsd/nfs4idmap.c | 14 +++
fs/nfsd/nfs4state.c | 87 ++++++++--------
fs/nfsd/nfs4xdr.c | 38 +++----
fs/nfsd/nfsctl.c | 1 +
fs/nfsd/nfsfh.c | 13 ++-
fs/nfsd/nfssvc.c | 3 +
fs/nfsd/trace.h | 122 ++++++++++++++++++++++
include/linux/sunrpc/cache.h | 9 +-
include/linux/sunrpc/rpc_rdma.h | 3 +-
include/linux/sunrpc/svc.h | 5 +-
include/linux/sunrpc/svc_rdma.h | 24 +++--
include/linux/sunrpc/svc_xprt.h | 2 +
include/linux/sunrpc/xdr.h | 67 ++++++++++---
include/trace/events/rpcgss.h | 59 ++++++++++-
include/trace/events/rpcrdma.h | 67 ++++++-------
include/trace/events/sunrpc.h | 76 ++++++++++++++
net/sunrpc/auth_gss/auth_gss.c | 2 +-
net/sunrpc/auth_gss/svcauth_gss.c | 60 +++++------
net/sunrpc/cache.c | 128 ++++++++++++++----------
net/sunrpc/clnt.c | 1 +
net/sunrpc/socklib.c | 141 ++++++++++++++++++++++++++
net/sunrpc/socklib.h | 15 +++
net/sunrpc/sunrpc.h | 4 -
net/sunrpc/svc.c | 20 +++-
net/sunrpc/svc_xprt.c | 22 +++-
net/sunrpc/svcauth_unix.c | 12 +++
net/sunrpc/svcsock.c | 202 +++++++++++++------------------------
net/sunrpc/xprt.c | 3 +-
net/sunrpc/xprtrdma/rpc_rdma.c | 36 +------
net/sunrpc/xprtrdma/svc_rdma_backchannel.c | 17 ++--
net/sunrpc/xprtrdma/svc_rdma_recvfrom.c | 244 +++++++++++++++++++++++++++-----------------
net/sunrpc/xprtrdma/svc_rdma_rw.c | 57 ++++++-----
net/sunrpc/xprtrdma/svc_rdma_sendto.c | 512 +++++++++++++++++++++++++++++++++++++++++++++++++++++----------------------------------------
net/sunrpc/xprtrdma/svc_rdma_transport.c | 8 +-
net/sunrpc/xprtsock.c | 188 ++++++----------------------------
40 files changed, 1411 insertions(+), 913 deletions(-)
create mode 100644 net/sunrpc/socklib.h

--
Chuck Lever