mbox series

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

Message ID 6bbed95d83465dde644c6f66acc73e3cd94f123e.camel@hammerspace.com (mailing list archive)
State New, archived
Headers show
Series [GIT,PULL] Please pull NFS client changes for Linux 4.20. | expand

Pull-request

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

Message

Trond Myklebust Oct. 26, 2018, 3:45 p.m. UTC
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(-)

Comments

Linus Torvalds Oct. 26, 2018, 8:10 p.m. UTC | #1
On Fri, Oct 26, 2018 at 8:45 AM Trond Myklebust <trondmy@hammerspace.com> wrote:
>
> NFS client updates for Linux 4.20

Pulled.

Btw, just out of curiosity - is there some pattern to when I get the
pull requests from you vs Anna? Or is it just "whoever happens to have
the baton"? Not that it matters, but I was wondering if there was some
logic to it that I've missed..

                Linus
Trond Myklebust Oct. 26, 2018, 8:20 p.m. UTC | #2
On Fri, 2018-10-26 at 13:10 -0700, Linus Torvalds wrote:
> On Fri, Oct 26, 2018 at 8:45 AM Trond Myklebust <
> trondmy@hammerspace.com> wrote:
> > 
> > NFS client updates for Linux 4.20
> 
> Pulled.

Thank you!

> Btw, just out of curiosity - is there some pattern to when I get the
> pull requests from you vs Anna? Or is it just "whoever happens to
> have
> the baton"? Not that it matters, but I was wondering if there was
> some
> logic to it that I've missed..

We agreed about a year or so ago to take turns maintaining the linux-
next branches. So in practice that means Anna has been sending you the
pull requests for the odd kernel minor numbers, and I've been sending
you the ones for the even numbers.
We still share the burden of reviewing the code, though, so if
something slips through the cracks, we get to share the blame... ☺

Cheers
  Trond
Linus Torvalds Oct. 26, 2018, 8:25 p.m. UTC | #3
On Fri, Oct 26, 2018 at 1:21 PM Trond Myklebust <trondmy@hammerspace.com> wrote:
>
> We agreed about a year or so ago to take turns maintaining the linux-
> next branches.

Heh. That was a simpler pattern than I thought. It was just hidden by
the fact that there are sometimes more than one pull request during
the merge window, and then a variable number of "fixes" pull requests
during the rc's..

But now that you mention it I can see that yeah, it just alternates by
releases..

                   Linus