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) Cheers Trond ---------------------------------------------------------------- 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 trond.myklebust@xxxxxxxxxxxxxxx