[GIT PULL] Please pull NFS client changes for 4.18

From: Trond Myklebust
Date: Tue Jun 12 2018 - 09:39:35 EST

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