Web lists-archives.com

[GIT PULL] Please pull NFS client changes for 4.18

Hi Linus,

The following changes since commit 786b71f5b754273ccef6d9462e52062b3e1f9877:

  Merge tag 'nds32-for-linus-4.17-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/greentime/linux (2018-05-28 05:25:57 -0700)

are available in the Git repository at:

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

for you to fetch changes up to 93b7f7ad2018d2037559b1d0892417864c78b371:

  skip LAYOUTRETURN if layout is invalid (2018-06-12 08:48:04 -0400)


NFS client updates for Linux 4.18

Highlights include:

Stable fixes:
- Fix a 1-byte stack overflow in nfs_idmap_read_and_verify_message
- Fix a hang due to incorrect error returns in rpcrdma_convert_iovs()
- Revert an incorrect change to the NFSv4.1 callback channel
- Fix a bug in the NFSv4.1 sequence error handling

Features and optimisations:
- Support for piggybacking a LAYOUTGET operation to the OPEN compound
- RDMA performance enhancements to deal with transport congestion
- Add proper SPDX tags for NetApp-contributed RDMA source
- Do not request delegated file attributes (size+change) from the server
- Optimise away a GETATTR in the lookup revalidate code when doing NFSv4 OPEN
- Optimise away unnecessary lookups for rename targets
- Misc performance improvements when freeing NFSv4 delegations

Bugfixes and cleanups:
- Try to fail quickly if proto=rdma
- Clean up RDMA receive trace points
- Fix sillyrename to return the delegation when appropriate
- Misc attribute revalidation fixes
- Immediately clear the pNFS layout on a file when the server returns ESTALE
- Return NFS4ERR_DELAY when delegation/layout recalls fail due to igrab()
- Fix the client behaviour on NFS4ERR_SEQ_FALSE_RETRY

Anna Schumaker (4):
      NFS: Move call to nfs4_state_protect_write() to nfs4_write_setup()
      NFS: Move call to nfs4_state_protect() to nfs4_commit_setup()
      NFS: Pass "privileged" value to nfs4_init_sequence()
      NFS: Merge nfs41_free_stateid() with _nfs41_free_stateid()

Benjamin Coddington (1):
      NFSv4: Don't add a new lock on an interrupted wait for LOCK

Chuck Lever (21):
      xprtrdma: Add proper SPDX tags for NetApp-contributed source
      xprtrdma: Try to fail quickly if proto=rdma
      xprtrdma: Create transport's CM ID in the correct network namespace
      xprtrdma: Fix max_send_wr computation
      SUNRPC: Initialize rpc_rqst outside of xprt->reserve_lock
      SUNRPC: Add a ->free_slot transport callout
      xprtrdma: Introduce ->alloc_slot call-out for xprtrdma
      xprtrdma: Make rpc_rqst part of rpcrdma_req
      xprtrdma: Clean up Receive trace points
      xprtrdma: Move Receive posting to Receive handler
      xprtrdma: Remove rpcrdma_ep_{post_recv, post_extra_recv}
      xprtrdma: Remove rpcrdma_buffer_get_req_locked()
      xprtrdma: Remove rpcrdma_buffer_get_rep_locked()
      xprtrdma: Make rpcrdma_sendctx_put_locked() a static function
      xprtrdma: Return -ENOBUFS when no pages are available
      xprtrdma: Move common wait_for_buffer_space call to parent function
      xprtrdma: Wait on empty sendctx queue
      xprtrdma: Add trace_xprtrdma_dma_map(mr)
      xprtrdma: Remove transfertypes array
      NFSv4.0: Remove cl_ipaddr from non-UCS client ID
      NFSv4.0: Remove transport protocol name from non-UCS client ID

Dave Wysochanski (1):
      NFSv4: Fix possible 1-byte stack overflow in nfs_idmap_read_and_verify_message

Fred Isaman (14):
      pnfs: Remove redundant assignment from nfs4_proc_layoutget().
      pnfs: Store return value of decode_layoutget for later processing
      NFS4: move ctx into nfs4_run_open_task
      pnfs: Add layout driver flag PNFS_LAYOUTGET_ON_OPEN
      pnfs: refactor send_layoutget
      pnfs: move allocations out of nfs4_proc_layoutget
      pnfs: Add conditional encode/decode of LAYOUTGET within OPEN compound
      pnfs: Move nfs4_opendata into nfs4_fs.h
      pnfs: Change pnfs_alloc_init_layoutget_args call signature
      pnfs: Add LAYOUTGET to OPEN of a new file
      pnfs: Add LAYOUTGET to OPEN of an existing file
      pnfs: Stop attempting LAYOUTGET on OPEN on failure
      pnfs: Add barrier to prevent lgopen using LAYOUTGET during recall
      pnfs: Fix manipulation of NFS_LAYOUT_FIRST_LAYOUTGET

NeilBrown (4):
      NFS: slight optimization for walking list for delegations
      NFS: use cond_resched() when restarting walk of delegation list.
      rculist: add list_for_each_entry_from_rcu()
      NFS: Avoid quadratic search when freeing delegations.

Olga Kornievskaia (1):
      skip LAYOUTRETURN if layout is invalid

Trond Myklebust (35):
      NFS: Optimise away the close-to-open GETATTR when we have NFSv4 OPEN
      NFS: If the VFS sets LOOKUP_REVAL then force a lookup of the dentry
      NFS: Optimise away lookups for rename targets
      NFSv4: Only pass the delegation to setattr if we're sending a truncate
      NFSv4: Fix sillyrename to return the delegation when appropriate
      NFS: Fix up sillyrename()
      NFS: Set the force revalidate flag if the inode is not completely initialised
      NFS: Ensure we revalidate the inode correctly after remove or rename
      NFS: Ensure we revalidate the inode correctly after setacl
      NFS: Fix up nfs_post_op_update_inode() to force ctime updates
      NFSv4: Always clear the pNFS layout when handling ESTALE
      pNFS: Refactor nfs4_layoutget_release()
      NFSv4/pnfs: Ensure pnfs_parse_lgopen() won't try to parse uninitialised data
      NFSv4/pnfs: Don't switch off layoutget-on-open for transient errors
      pNFS: Don't send LAYOUTGET on OPEN for read, if we already have cached data
      pnfs: Don't call commit on failed layoutget-on-open
      pnfs: Don't release the sequence slot until we've processed layoutget on open
      NFSv4: Don't request size+change attribute if they are delegated to us
      NFS: Pass the inode down to the getattr() callback
      NFSv4: Don't ask for delegated attributes when revalidating the inode
      NFSv4: Don't ask for delegated attributes when adding a hard link
      NFSv4: Ignore NFS_INO_REVAL_FORCED in nfs4_proc_access
      NFSv4: Ensure the inode is clean when we set a delegation
      NFS: fix up nfs_setattr_update_inode
      NFS: Fix attribute revalidation
      NFS: Improve caching while holding a delegation
      NFS: Ignore NFS_INO_REVAL_FORCED in nfs_check_inode_attributes()
      NFS: Filter cache invalidation when holding a delegation
      Merge tag 'nfs-rdma-for-4.18-1' of git://git.linux-nfs.org/projects/anna/linux-nfs
      NFSv4: Fix a compiler warning when CONFIG_NFS_V4_1 is undefined
      NFSv4: Return NFS4ERR_DELAY when a delegation recall fails due to igrab()
      NFSv4: Return NFS4ERR_DELAY when a layout recall fails due to igrab()
      NFSv4: Revert commit 5f83d86cf531d ("NFSv4.x: Fix wraparound issues..")
      NFSv4: Fix a typo in nfs41_sequence_process
      NFSv4.1: Fix the client behaviour on NFS4ERR_SEQ_FALSE_RETRY

 fs/nfs/callback_proc.c                     |  43 ++--
 fs/nfs/client.c                            |   3 +-
 fs/nfs/delegation.c                        |  86 +++++--
 fs/nfs/dir.c                               |  51 +++-
 fs/nfs/export.c                            |   2 +-
 fs/nfs/flexfilelayout/flexfilelayout.c     |   1 +
 fs/nfs/inode.c                             | 126 +++++++---
 fs/nfs/nfs3proc.c                          |  13 +-
 fs/nfs/nfs42proc.c                         |   6 +-
 fs/nfs/nfs4_fs.h                           |  27 +-
 fs/nfs/nfs4idmap.c                         |   5 +-
 fs/nfs/nfs4proc.c                          | 391 +++++++++++++----------------
 fs/nfs/nfs4state.c                         |   8 +
 fs/nfs/nfs4xdr.c                           |  65 ++++-
 fs/nfs/pnfs.c                              | 331 +++++++++++++++++++++---
 fs/nfs/pnfs.h                              |  28 ++-
 fs/nfs/proc.c                              |  13 +-
 fs/nfs/unlink.c                            |  20 +-
 fs/nfs/write.c                             |  10 +-
 include/linux/nfs_fs_sb.h                  |   2 +
 include/linux/nfs_xdr.h                    |  15 +-
 include/linux/rculist.h                    |  13 +
 include/linux/sunrpc/rpc_rdma.h            |   1 +
 include/linux/sunrpc/xprt.h                |   6 +-
 include/linux/sunrpc/xprtrdma.h            |   1 +
 include/trace/events/rpcrdma.h             |  76 ++++--
 net/sunrpc/clnt.c                          |   1 +
 net/sunrpc/xprt.c                          |  17 +-
 net/sunrpc/xprtrdma/backchannel.c          | 105 +++-----
 net/sunrpc/xprtrdma/fmr_ops.c              |  23 ++
 net/sunrpc/xprtrdma/frwr_ops.c             |  31 ++-
 net/sunrpc/xprtrdma/module.c               |   1 +
 net/sunrpc/xprtrdma/rpc_rdma.c             |  66 ++---
 net/sunrpc/xprtrdma/svc_rdma_backchannel.c |   1 +
 net/sunrpc/xprtrdma/transport.c            |  64 +++--
 net/sunrpc/xprtrdma/verbs.c                | 291 +++++++++------------
 net/sunrpc/xprtrdma/xprt_rdma.h            |  26 +-
 net/sunrpc/xprtsock.c                      |   4 +
 38 files changed, 1240 insertions(+), 733 deletions(-)
Trond Myklebust
Linux NFS client maintainer, Hammerspace