[GIT PULL] Please pull NFS client updates for Linux 5.1

From: Trond Myklebust
Date: Tue Mar 12 2019 - 07:46:40 EST


Hi Linus,

The following changes since commit 2137397c92aec3713fa10be3c9b830f9a1674e60:

Merge tag 'sound-5.0' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound (2019-02-20 09:42:52 -0800)

are available in the Git repository at:

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

for you to fetch changes up to 4d6c671ace569d4b0d3f8d92ab3aef18a5d166bc:

SUNRPC: Take the transport send lock before binding+connecting (2019-03-10 14:08:19 -0400)

----------------------------------------------------------------
NFS client updates for Linux 5.1

Highlights include:

Stable fixes:
- Fixes for NFS I/O request leakages
- Fix error handling paths in the NFS I/O recoalescing code
- Reinitialise NFSv4.1 sequence results before retransmitting a request
- Fix a soft lockup in the delegation recovery code
- Bulk destroy of layouts needs to be safe w.r.t. umount
- Prevent thundering herd issues when the SUNRPC socket is not connected
- Respect RPC call timeouts when retrying transmission

Features:
- Convert rpc auth layer to use xdr_streams
- Config option to disable insecure RPCSEC_GSS crypto types
- Reduce size of RPC receive buffers
- Readdirplus optimization by cache mechanism
- Convert SUNRPC socket send code to use iov_iter()
- SUNRPC micro-optimisations to avoid indirect calls
- Add support for the pNFS LAYOUTERROR operation and use it with the
pNFS/flexfiles driver
- Add trace events to report non-zero NFS status codes
- Various removals of unnecessary dprintks

Bugfixes and cleanups:
- Fix a number of sparse warnings and documentation format warnings
- Fix nfs_parse_devname to not modify it's argument
- Fix potential corruption of page being written through pNFS/blocks
- fix xfstest generic/099 failures on nfsv3
- Avoid NFSv4.1 "false retries" when RPC calls are interrupted
- Abort I/O early if the pNFS/flexfiles layout segment was invalidated
- Avoid unnecessary pNFS/flexfiles layout invalidations

----------------------------------------------------------------
Anna Schumaker (1):
NFS: Add missing encode / decode sequence_maxsz to v4.2 operations

Chuck Lever (23):
xprtrdma: Fix sparse warnings
xprtrdma: Check inline size before providing a Write chunk
xprtrdma: Reduce the doorbell rate (Receive)
SUNRPC: Display symbolic flag names in RPC trace events
SUNRPC: Add xdr_stream::rqst field
SUNRPC: Add XDR overflow trace event
SUNRPC: Add trace event that reports reply page vector alignment
NFS: Remove print_overflow_msg()
NFS: Add trace events to report non-zero NFS status codes
SUNRPC: Remove some dprintk() call sites from auth functions
SUNRPC: Remove rpc_xprt::tsh_size
SUNRPC: Add build option to disable support for insecure enctypes
SUNRPC: Use struct xdr_stream when constructing RPC Call header
SUNRPC: Clean up rpc_verify_header()
SUNRPC: Use struct xdr_stream when decoding RPC Reply header
SUNRPC: Introduce trace points in rpc_auth_gss.ko
SUNRPC: Remove xdr_buf_trim()
SUNRPC: Add SPDX IDs to some net/sunrpc/auth_gss/ files
SUNRPC: Introduce rpc_prepare_reply_pages()
NFS: Account for XDR pad of buf->pages
SUNRPC: Make AUTH_SYS and AUTH_NULL set au_verfsize
SUNRPC: Add rpc_auth::au_ralign field
SUNRPC: Use au_rslack when computing reply buffer size

Eric W. Biederman (1):
fs/nfs: Fix nfs_parse_devname to not modify it's argument

Julia Lawall (1):
NFS: drop useless LIST_HEAD

Kazuo Ito (2):
pNFS: Fix potential corruption of page being written
pNFS: Avoid read/modify/write when it is not necessary

NeilBrown (1):
SUNRPC: remove pointless test in unx_match()

Trond Myklebust (58):
NFS: Fix I/O request leakages
NFS: Fix an I/O request leakage in nfs_do_recoalesce
NFS: Don't recoalesce on error in nfs_pageio_complete_mirror()
NFS: Clean up list moves of struct nfs_page
NFS: Pass error information to the pgio error cleanup routine
NFS: Ensure NFS writeback allocations don't recurse back into NFS.
NFS: EINTR is also a fatal error.
NFS: ENOMEM should also be a fatal error.
NFS: Fix up documentation warnings
NFS: Fix sparse annotations for nfs_set_open_stateid_locked()
SUNRPC: Set memalloc_nofs_save() on all rpciod/xprtiod jobs
SUNRPC: Use poll() to fix up the socket requeue races
SUNRPC: Ensure rq_bytes_sent is reset before request transmission
SUNRPC: Don't reset the stream record info when the receive worker is running
SUNRPC: Handle zero length fragments correctly
SUNRPC: Don't suppress socket errors when a message read completes
SUNRPC: Initiate a connection close on an ESHUTDOWN error in stream receive
SUNRPC: Convert xs_send_kvec() to use iov_iter_kvec()
SUNRPC: Convert socket page send code to use iov_iter()
SUNRPC: Further cleanups of xs_sendpages()
SUNRPC: Remove the redundant 'zerocopy' argument to xs_sendpages()
NFSv4.1: Avoid false retries when RPC calls are interrupted
NFS: Fix a soft lockup in the delegation recovery code
NFS/pnfs: Bulk destroy of layouts needs to be safe w.r.t. umount
Merge tag 'nfs-rdma-for-5.1-1' of git://git.linux-nfs.org/projects/anna/linux-nfs
SUNRPC: Fix an Oops in udp_poll()
NFSv4.1: Reinitialise sequence results before retransmitting a request
NFSv4.1: Don't process the sequence op more than once.
NFSv4/flexfiles: Fix invalid deref in FF_LAYOUT_DEVID_NODE()
NFS/flexfiles: Fix up sparse RCU annotations
NFSv4/pnfs: Fix barriers in nfs4_mark_deviceid_unavailable()
NFSv4/flexfiles: Abort I/O early if the layout segment was invalidated
NFSv4.2: Add client support for the generic 'layouterror' RPC call
NFS/flexfiles: Send LAYOUTERROR when failing over mirrored reads
NFSv4: Handle early exit in layoutget by returning an error
NFS/flexfiles: refactor calls to fs4_ff_layout_prepare_ds()
NFS/flexfiles: Avoid unnecessary layout invalidations
NFS/flexfiles: Remove bogus checks for invalid deviceids
NFS/flexfiles: Don't invalidate DS deviceids for being unresponsive
NFS/flexfiles: Speed up read failover when DSes are down
NFS/flexfiles: Simplify nfs4_ff_layout_select_ds_fh()
NFS/flexfiles: Simplify nfs4_ff_find_or_create_ds_client()
NFS/flexfiles: Simplify ff_layout_get_ds_cred()
NFS/flexfile: Simplify nfs4_ff_layout_ds_version()
NFS/flexfile: Simplify nfs4_ff_layout_select_ds_stateid()
NFS/flexfiles: Remove dead code in ff_layout_mirror_valid()
NFS/flexfiles: Clean up mirror DS initialisation
SUNRPC: Convert remaining GFP_NOIO, and GFP_NOWAIT sites in sunrpc
NFSv4.1: Bump the default callback session slot count to 16
SUNRPC: Allow dynamic allocation of back channel slots
SUNRPC: Prevent thundering herd when the socket is not connected
SUNRPC: Fix up RPC back channel transmission
SUNRPC: Respect RPC call timeouts when retrying transmission
SUNRPC: Clean up
SUNRPC: Remove redundant calls to RPC_IS_QUEUED()
SUNRPC: Check whether the task was transmitted before rebind/reconnect
SUNRPC: Micro-optimise when the task is known not to be sleeping
SUNRPC: Take the transport send lock before binding+connecting

ZhangXiaoxu (1):
nfs: fix xfstest generic/099 failed on nfsv3

luanshi (1):
NFS: readdirplus optimization by cache mechanism

zhangliguang (2):
NFS: Remove redundant semicolon
NFS: Fix typo in comments of nfs_readdir_alloc_pages()

fs/lockd/clnt4xdr.c | 14 -
fs/lockd/clntxdr.c | 14 -
fs/nfs/callback_xdr.c | 64 ++-
fs/nfs/delegation.c | 22 +-
fs/nfs/delegation.h | 1 +
fs/nfs/dir.c | 98 ++++-
fs/nfs/direct.c | 7 +-
fs/nfs/file.c | 44 +-
fs/nfs/flexfilelayout/flexfilelayout.c | 225 +++++++---
fs/nfs/flexfilelayout/flexfilelayout.h | 75 ++--
fs/nfs/flexfilelayout/flexfilelayoutdev.c | 161 +++----
fs/nfs/inode.c | 33 +-
fs/nfs/internal.h | 5 +-
fs/nfs/io.c | 12 +-
fs/nfs/namespace.c | 8 +-
fs/nfs/nfs2xdr.c | 124 ++----
fs/nfs/nfs3acl.c | 2 -
fs/nfs/nfs3xdr.c | 209 +++------
fs/nfs/nfs42.h | 3 +
fs/nfs/nfs42proc.c | 164 +++++++
fs/nfs/nfs42xdr.c | 130 +++++-
fs/nfs/nfs4client.c | 33 +-
fs/nfs/nfs4namespace.c | 5 +-
fs/nfs/nfs4proc.c | 138 +++---
fs/nfs/nfs4session.c | 7 +-
fs/nfs/nfs4session.h | 7 +-
fs/nfs/nfs4state.c | 1 +
fs/nfs/nfs4trace.h | 25 ++
fs/nfs/nfs4xdr.c | 530 +++++++----------------
fs/nfs/nfstrace.c | 1 +
fs/nfs/nfstrace.h | 85 ++++
fs/nfs/pagelist.c | 47 +-
fs/nfs/pnfs.c | 33 +-
fs/nfs/pnfs.h | 2 +
fs/nfs/pnfs_dev.c | 13 +
fs/nfs/read.c | 2 +-
fs/nfs/super.c | 2 +-
fs/nfs/unlink.c | 8 +-
fs/nfs/write.c | 19 +-
fs/nfsd/nfs4callback.c | 13 -
include/linux/nfs4.h | 1 +
include/linux/nfs_fs_sb.h | 1 +
include/linux/nfs_page.h | 10 +
include/linux/nfs_xdr.h | 37 +-
include/linux/sunrpc/auth.h | 44 +-
include/linux/sunrpc/clnt.h | 3 +
include/linux/sunrpc/gss_krb5_enctypes.h | 42 +-
include/linux/sunrpc/sched.h | 9 +
include/linux/sunrpc/xdr.h | 23 +-
include/linux/sunrpc/xprt.h | 7 -
include/linux/sunrpc/xprtsock.h | 1 +
include/trace/events/rpcgss.h | 361 ++++++++++++++++
include/trace/events/rpcrdma.h | 12 +-
include/trace/events/sunrpc.h | 361 +++++++++++++++-
net/sunrpc/Kconfig | 16 +
net/sunrpc/auth.c | 136 +++---
net/sunrpc/auth_gss/Makefile | 2 +-
net/sunrpc/auth_gss/auth_gss.c | 553 ++++++++++++------------
net/sunrpc/auth_gss/gss_krb5_mech.c | 29 +-
net/sunrpc/auth_gss/gss_krb5_wrap.c | 8 +-
net/sunrpc/auth_gss/gss_mech_switch.c | 27 +-
net/sunrpc/auth_gss/gss_rpc_upcall.c | 15 +-
net/sunrpc/auth_gss/gss_rpc_upcall.h | 16 +-
net/sunrpc/auth_gss/gss_rpc_xdr.c | 15 +-
net/sunrpc/auth_gss/gss_rpc_xdr.h | 17 +-
net/sunrpc/auth_gss/svcauth_gss.c | 3 +-
net/sunrpc/auth_gss/trace.c | 11 +
net/sunrpc/auth_null.c | 56 +--
net/sunrpc/auth_unix.c | 122 +++---
net/sunrpc/backchannel_rqst.c | 42 +-
net/sunrpc/clnt.c | 660 ++++++++++++++++-------------
net/sunrpc/sched.c | 17 +-
net/sunrpc/svc.c | 19 +-
net/sunrpc/xdr.c | 121 +++---
net/sunrpc/xprt.c | 23 +-
net/sunrpc/xprtrdma/backchannel.c | 3 +-
net/sunrpc/xprtrdma/frwr_ops.c | 4 +-
net/sunrpc/xprtrdma/rpc_rdma.c | 22 +-
net/sunrpc/xprtrdma/svc_rdma_backchannel.c | 1 -
net/sunrpc/xprtrdma/transport.c | 2 -
net/sunrpc/xprtrdma/verbs.c | 2 +
net/sunrpc/xprtrdma/xprt_rdma.h | 12 +-
net/sunrpc/xprtsock.c | 317 ++++++++------
83 files changed, 3366 insertions(+), 2203 deletions(-)
create mode 100644 include/trace/events/rpcgss.h
create mode 100644 net/sunrpc/auth_gss/trace.c
--
Trond Myklebust
Linux NFS client maintainer, Hammerspace
trond.myklebust@xxxxxxxxxxxxxxx