[GIT PULL] Please pull NFS client changes for Linux 4.20.

From: Trond Myklebust
Date: Fri Oct 26 2018 - 11:45:33 EST

Hi Linus,

The following changes since commit 17b57b1883c1285f3d0dc2266e8f79286a7bef38:

Linux 4.19-rc6 (2018-09-30 07:15:35 -0700)

are available in the Git repository at:

git://git.linux-nfs.org/projects/trondmy/linux-nfs.git tags/nfs-for-4.20-1

for you to fetch changes up to 331bc71cb1751d78f6807ad8e6162b07c67cdd1b:

SUNRPC: Convert the auth cred cache to use refcount_t (2018-10-23 12:24:33 -0400)


NFS client updates for Linux 4.20

Highlights include:

Stable fixes:
- Fix the NFSv4.1 r/wsize sanity checking
- Reset the RPC/RDMA credit grant properly after a disconnect
- Fix a missed page unlock after pg_doio()

Features and optimisations:
- Overhaul of the RPC client socket code to eliminate a locking bottleneck
and reduce the latency when transmitting lots of requests in parallel.
- Allow parallelisation of the RPCSEC_GSS encoding of an RPC request.
- Convert the RPC client socket receive code to use iovec_iter() for
improved efficiency.
- Convert several NFS and RPC lookup operations to use RCU instead of
taking global locks.
- Avoid the need for BH-safe locks in the RPC/RDMA back channel.

Bugfixes and cleanups:
- Fix lock recovery during NFSv4 delegation recalls
- Fix the NFSv4 + NFSv4.1 "lookup revalidate + open file" case.
- Fixes for the RPC connection metrics
- Various RPC client layer cleanups to consolidate stream based sockets
- RPC/RDMA connection cleanups
- Simplify the RPC/RDMA cleanup after memory operation failures
- Clean ups for NFS v4.2 copy completion and NFSv4 open state reclaim.

Anna Schumaker (4):
NFS: Split out the body of nfs4_reclaim_open_state()
NFS: Reduce indentation of the switch statement in nfs4_reclaim_open_state()
NFS: Reduce indentation of nfs4_recovery_handle_error()
NFSv4: Split out NFS v4.2 copy completion functions

Arnd Bergmann (1):
SUNRPC: use cmpxchg64() in gss_seq_send64_fetch_and_inc()

Benjamin Coddington (2):
nfs: Fix a missed page unlock after pg_doio()
nfs: remove redundant call to nfs_context_set_write_error()

Chuck Lever (20):
xprtrdma: xprt_release_rqst_cong is called outside of transport_lock
xprtrdma: Reset credit grant properly after a disconnect
xprtrdma: Create more MRs at a time
xprtrdma: Explicitly resetting MRs is no longer necessary
xprtrdma: Name MR trace events consistently
sunrpc: Fix connect metrics
sunrpc: Report connect_time in seconds
xprtrdma: Rename rpcrdma_conn_upcall
xprtrdma: Conventional variable names in rpcrdma_conn_upcall
xprtrdma: Eliminate "connstate" variable from rpcrdma_conn_upcall()
xprtrdma: Re-organize the switch() in rpcrdma_conn_upcall
xprtrdma: Simplify RPC wake-ups on connect
xprtrdma: Rename rpcrdma_qp_async_error_upcall
xprtrdma: Remove memory address of "ep" from an error message
xprtrdma: Don't disable BH's in backchannel server
xprtrdma: Move rb_flags initialization
xprtrdma: Report when there were zero posted Receives
xprtrdma: Add documenting comments
xprtrdma: Clean up xprt_rdma_disconnect_inject
xprtrdma: Squelch a sparse warning

Frank Sorenson (1):
NFS: change sign of nfs_fh length

J. Bruce Fields (1):
sunrpc: safely reallow resvport min/max inversion

Olga Kornievskaia (1):
NFSv4.x: fix lock recovery during delegation recall

Tigran Mkrtchyan (1):
nfs4: flex_file: ignore synthetic uid/gid for tightly coupled DSes

Trond Myklebust (67):
SUNRPC: Clean up initialisation of the struct rpc_rqst
SUNRPC: If there is no reply expected, bail early from call_decode
SUNRPC: The transmitted message must lie in the RPCSEC window of validity
SUNRPC: Simplify identification of when the message send/receive is complete
SUNRPC: Avoid holding locks across the XDR encoding of the RPC message
SUNRPC: Rename TCP receive-specific state variables
SUNRPC: Move reset of TCP state variables into the reconnect code
SUNRPC: Add socket transmit queue offset tracking
SUNRPC: Simplify dealing with aborted partially transmitted messages
SUNRPC: Refactor the transport request pinning
SUNRPC: Add a helper to wake up a sleeping rpc_task and set its status
SUNRPC: Test whether the task is queued before grabbing the queue spinlocks
SUNRPC: Don't wake queued RPC calls multiple times in xprt_transmit
SUNRPC: Rename xprt->recv_lock to xprt->queue_lock
SUNRPC: Refactor xprt_transmit() to remove the reply queue code
SUNRPC: Refactor xprt_transmit() to remove wait for reply code
SUNRPC: Minor cleanup for call_transmit()
SUNRPC: Distinguish between the slot allocation list and receive queue
SUNRPC: Add a transmission queue for RPC requests
SUNRPC: Refactor RPC call encoding
SUNRPC: Fix up the back channel transmit
SUNRPC: Treat the task and request as separate in the xprt_ops->send_request()
SUNRPC: Don't reset the request 'bytes_sent' counter when releasing XPRT_LOCK
SUNRPC: Simplify xprt_prepare_transmit()
SUNRPC: Move RPC retransmission stat counter to xprt_transmit()
SUNRPC: Improve latency for interactive tasks
SUNRPC: Support for congestion control when queuing is enabled
SUNRPC: Enqueue swapper tagged RPCs at the head of the transmit queue
SUNRPC: Allow calls to xprt_transmit() to drain the entire transmit queue
SUNRPC: Allow soft RPC calls to time out when waiting for the XPRT_LOCK
SUNRPC: Turn off throttling of RPC slots for TCP sockets
SUNRPC: Clean up transport write space handling
SUNRPC: Cleanup: remove the unused 'task' argument from the request_send()
SUNRPC: Don't take transport->lock unnecessarily when taking XPRT_LOCK
SUNRPC: Convert xprt receive queue to use an rbtree
SUNRPC: Fix priority queue fairness
SUNRPC: Convert the xprt->sending queue back to an ordinary wait queue
SUNRPC: Add a label for RPC calls that require allocation on receive
SUNRPC: Add a bvec array to struct xdr_buf for use with iovec_iter()
SUNRPC: Simplify TCP receive code by switching to using iterators
SUNRPC: Clean up - rename xs_tcp_data_receive() to xs_stream_data_receive()
SUNRPC: Allow AF_LOCAL sockets to use the generic stream receive
SUNRPC: Clean up xs_udp_data_receive()
SUNRPC: Unexport xdr_partial_copy_from_skb()
pNFS: Don't zero out the array in nfs4_alloc_pages()
pNFS: Don't allocate more pages than we need to fit a layoutget response
NFS: Convert lookups of the lock context to RCU
NFS: Simplify internal check for whether file is open for write
NFS: Convert lookups of the open context to RCU
NFSv4: Convert open state lookup to use RCU
NFSv4: Convert struct nfs4_state to use refcount_t
NFSv4.1: Fix the r/wsize checking
NFSv3: Improve NFSv3 performance when server returns no post-op attributes
NFSv4: Save a few bytes in the nfs_pgio_args/res
NFS: Remove private spinlock in struct nfs_pgio_header
SUNRPC: Remove rpc_authflavor_lock in favour of RCU locking
SUNRPC: Lockless lookup of RPCSEC_GSS mechanisms
SUNRPC: Replace krb5_seq_lock with a lockless scheme
NFS: Fix dentry revalidation on NFSv4 lookup
NFS: Refactor nfs_lookup_revalidate()
NFSv4: Fix lookup revalidate of regular files
SUNRPC: Fix a compile warning for cmpxchg64()
Merge tag 'nfs-rdma-for-4.20-1' of git://git.linux-nfs.org/projects/anna/linux-nfs
SUNRPC: Clean up the AUTH cache code
SUNRPC: Simplify lookup code
SUNRPC: Convert auth creds to use refcount_t
SUNRPC: Convert the auth cred cache to use refcount_t

fs/nfs/delegation.c | 17 +-
fs/nfs/dir.c | 295 ++++----
fs/nfs/filelayout/filelayout.c | 1 +
fs/nfs/flexfilelayout/flexfilelayout.c | 1 +
fs/nfs/flexfilelayout/flexfilelayoutdev.c | 2 +-
fs/nfs/inode.c | 70 +-
fs/nfs/nfs3proc.c | 5 +
fs/nfs/nfs3xdr.c | 10 +-
fs/nfs/nfs4_fs.h | 3 +-
fs/nfs/nfs4client.c | 16 +-
fs/nfs/nfs4proc.c | 53 +-
fs/nfs/nfs4state.c | 254 ++++---
fs/nfs/nfs4xdr.c | 2 +-
fs/nfs/pagelist.c | 49 +-
fs/nfs/pnfs.c | 16 +-
fs/nfs/pnfs.h | 1 +
fs/nfs/read.c | 10 +-
include/linux/nfs_fs.h | 2 +
include/linux/nfs_fs_sb.h | 3 +
include/linux/nfs_xdr.h | 28 +-
include/linux/sunrpc/auth.h | 18 +-
include/linux/sunrpc/auth_gss.h | 1 +
include/linux/sunrpc/bc_xprt.h | 1 +
include/linux/sunrpc/gss_krb5.h | 3 +-
include/linux/sunrpc/sched.h | 10 +-
include/linux/sunrpc/svc_xprt.h | 1 -
include/linux/sunrpc/xdr.h | 11 +-
include/linux/sunrpc/xprt.h | 35 +-
include/linux/sunrpc/xprtsock.h | 36 +-
include/trace/events/rpcrdma.h | 18 +-
include/trace/events/sunrpc.h | 37 +-
net/sunrpc/auth.c | 310 ++++----
net/sunrpc/auth_generic.c | 2 +-
net/sunrpc/auth_gss/auth_gss.c | 45 +-
net/sunrpc/auth_gss/gss_krb5_seal.c | 38 +-
net/sunrpc/auth_gss/gss_krb5_wrap.c | 8 +-
net/sunrpc/auth_gss/gss_mech_switch.c | 28 +-
net/sunrpc/auth_gss/gss_rpc_xdr.c | 1 +
net/sunrpc/auth_null.c | 6 +-
net/sunrpc/auth_unix.c | 4 +-
net/sunrpc/backchannel_rqst.c | 1 -
net/sunrpc/clnt.c | 174 +++--
net/sunrpc/sched.c | 178 +++--
net/sunrpc/socklib.c | 10 +-
net/sunrpc/svc_xprt.c | 2 -
net/sunrpc/svcsock.c | 6 +-
net/sunrpc/xdr.c | 34 +
net/sunrpc/xprt.c | 908 ++++++++++++++++-------
net/sunrpc/xprtrdma/backchannel.c | 20 +-
net/sunrpc/xprtrdma/fmr_ops.c | 131 ++--
net/sunrpc/xprtrdma/frwr_ops.c | 137 ++--
net/sunrpc/xprtrdma/rpc_rdma.c | 30 +-
net/sunrpc/xprtrdma/svc_rdma_backchannel.c | 15 +-
net/sunrpc/xprtrdma/transport.c | 120 ++-
net/sunrpc/xprtrdma/verbs.c | 178 ++---
net/sunrpc/xprtrdma/xprt_rdma.h | 18 +-
net/sunrpc/xprtsock.c | 1107 ++++++++++++----------------
57 files changed, 2481 insertions(+), 2039 deletions(-)

Trond Myklebust
Linux NFS client maintainer, Hammerspace