[GIT PULL] Please pull NFS client changes for 5.11

From: Trond Myklebust
Date: Thu Dec 17 2020 - 13:08:48 EST


Hi Linus,

The following changes since commit
63e2fffa59a9dd91e443b08832656399fd80b7f0:

pNFS/flexfiles: Fix array overflow when flexfiles mirroring is
enabled (2020-11-30 10:52:22 -0500)

are available in the Git repository at:

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

for you to fetch changes up to
52104f274e2d7f134d34bab11cada8913d4544e2:

NFS/pNFS: Fix a typo in ff_layout_resend_pnfs_read() (2020-12-16
17:25:24 -0500)


Stephen Rothwell has noted that there are conflicts with the upstream
tree.
They are due to the last-minute fix to the NFSv4.2 READ_PLUS code in
5.10,
and due to the changes for the nfsd XDR code. The fixups should be
trivial
but please let me know if you'd prefer that I do so.

Cheers
Trond

----------------------------------------------------------------
NFS client updates for Linux 5.11

Highlights include:

Features:
- NFSv3: Add emulation of lookupp() to improve open_by_filehandle()
support.
- A series of patches to improve readdir performance, particularly with
large directories.
- Basic support for using NFS/RDMA with the pNFS files and flexfiles
drivers.
- Micro-optimisations for RDMA.
- RDMA tracing improvements.

Bugfixes:
- Fix a long standing bug with xs_read_xdr_buf() when receiving partial
pages (Dan Aloni).
- Various fixes for getxattr and listxattr, when used over non-TCP
transports.
- Fixes for containerised NFS from Sargun Dhillon.
- switch nfsiod to be an UNBOUND workqueue (Neil Brown).
- READDIR should not ask for security label information if there is no
LSM policy. (Olga Kornievskaia)
- Avoid using interval-based rebinding with TCP in lockd (Calum
Mackay).
- A series of RPC and NFS layer fixes to support the NFSv4.2 READ_PLUS
code.
- A couple of fixes for pnfs/flexfiles read failover

Cleanups:
- Various cleanups for the SUNRPC xdr code in conjunction with the
READ_PLUS fixes.

----------------------------------------------------------------
Calum Mackay (1):
lockd: don't use interval-based rebinding over TCP

Chuck Lever (16):
xprtrdma: Replace dprintk call sites in ERR_CHUNK path
xprtrdma: Introduce Receive completion IDs
xprtrdma: Introduce Send completion IDs
xprtrdma: Introduce FRWR completion IDs
xprtrdma: Clean up trace_xprtrdma_post_linv
xprtrdma: Clean up reply parsing error tracepoints
xprtrdma: Clean up tracepoints in the reply path
xprtrdma: Clean up xprtrdma callback tracepoints
xprtrdma: Clean up trace_xprtrdma_nomrs()
xprtrdma: Display the task ID when reporting MR events
xprtrdma: Trace unmap_sync calls
xprtrdma: Move rpcrdma_mr_put()
xprtrdma: Micro-optimize MR DMA-unmapping
SUNRPC: Remove XDRBUF_SPARSE_PAGES flag in gss_proxy upcall
NFS: Fix rpcrdma_inline_fixup() crash with new LISTXATTRS
operation
xprtrdma: Fix XDRBUF_SPARSE_PAGES support

Colin Ian King (1):
NFSv4.2: fix error return on memory allocation failure

Dai Ngo (1):
NFSv4.2: Fix 5 seconds delay when doing inter server copy

Dan Aloni (1):
sunrpc: fix xs_read_xdr_buf for partial pages receive

Fedor Tokarev (1):
net: sunrpc: Fix 'snprintf' return value check in
'do_xprt_debugfs'

Frank van der Linden (1):
NFSv4.2: improve page handling for GETXATTR

Geliang Tang (1):
NFSv4.1: use BITS_PER_LONG macro in nfs4session.h

NeilBrown (1):
NFS: switch nfsiod to be an UNBOUND workqueue.

Olga Kornievskaia (1):
NFSv4.2: condition READDIR's mask for security label based on LSM
state

Sargun Dhillon (2):
NFS: NFSv2/NFSv3: Use cred from fs_context during mount
NFSv4: Refactor to use user namespaces for nfs4idmap

Trond Myklebust (63):
NFSv3: Refactor nfs3_proc_lookup() to split out the dentry
NFSv3: Add emulation of the lookupp() operation
NFSv4: Observe the NFS_MOUNT_SOFTREVAL flag in _nfs4_proc_lookupp
SUNRPC: rpc_wake_up() should wake up tasks in the correct order
NFS: Ensure contents of struct nfs_open_dir_context are
consistent
NFS: Clean up readdir struct nfs_cache_array
NFS: Clean up nfs_readdir_page_filler()
NFS: Clean up directory array handling
NFS: Don't discard readdir results
NFS: Remove unnecessary kmap in nfs_readdir_xdr_to_array()
NFS: Replace kmap() with kmap_atomic() in
nfs_readdir_search_array()
NFS: Simplify struct nfs_cache_array_entry
NFS: Support larger readdir buffers
NFS: More readdir cleanups
NFS: nfs_do_filldir() does not return a value
NFS: Reduce readdir stack usage
NFS: Cleanup to remove nfs_readdir_descriptor_t typedef
NFS: Allow the NFS generic code to pass in a verifier to readdir
NFS: Handle NFS4ERR_NOT_SAME and NFSERR_BADCOOKIE from readdir
calls
NFS: Improve handling of directory verifiers
NFS: Optimisations for monotonically increasing readdir cookies
NFS: Reduce number of RPC calls when doing uncached readdir
NFS: Do uncached readdir when we're seeking a cookie in an empty
page cache
SUNRPC: xprt_load_transport() needs to support the netid "rdma6"
SUNRPC: Close a race with transport setup and module put
SUNRPC: Add a helper to return the transport identifier given a
netid
NFS: Switch mount code to use xprt_find_transport_ident()
SUNRPC: Remove unused function xprt_load_transport()
NFSv4/pNFS: Use connections to a DS that are all of the same
protocol family
pNFS: Add helpers for allocation/free of struct nfs4_pnfs_ds_addr
NFSv4/pNFS: Store the transport type in struct nfs4_pnfs_ds_addr
pNFS/flexfiles: Fix up layoutstats reporting for non-TCP
transports
SUNRPC: Fix up open coded kmemdup_nul()
pNFS: Clean up open coded xdr string decoding
NFSv4: Fix the alignment of page data in the getdeviceinfo reply
SUNRPC: Fix up typo in xdr_init_decode()
SUNRPC: Clean up helpers xdr_set_iov() and xdr_set_page_base()
SUNRPC: Fix up xdr_read_pages() to take arbitrary object lengths
SUNRPC: Clean up the handling of page padding in
rpc_prepare_reply_pages()
SUNRPC: Fix up xdr_set_page()
SUNRPC: Fix open coded xdr_stream_remaining()
NFSv4: Fix open coded xdr_stream_remaining()
NFSv4: Fix a pNFS layout related use-after-free race when freeing
the inode
NFSv4.2: Fix up the get/listxattr calls to
rpc_prepare_reply_pages()
SUNRPC: _shift_data_left/right_pages should check the shift
length
SUNRPC: Fixes for xdr_align_data()
SUNRPC: Fix xdr_expand_hole()
SUNRPC: Cleanup xdr_shrink_bufhead()
SUNRPC: _copy_to/from_pages() now check for zero length
SUNRPC: Clean up open coded setting of the xdr_stream 'nwords'
field
SUNRPC: Cleanup - constify a number of xdr_buf helpers
SUNRPC: When expanding the buffer, we may need grow the sparse
pages
NFSv4.2: Ensure we always reset the result->count in
decode_read_plus()
NFSv4.2: decode_read_plus_data() must skip padding after data
segment
NFSv4.2: decode_read_plus_hole() needs to check the extent offset
NFSv4.2: Handle hole lengths that exceed the READ_PLUS read
buffer
NFSv4.2: Don't error when exiting early on a READ_PLUS buffer
overflow
NFSv4.2: Deal with potential READ_PLUS data extent buffer
overflow
NFSv4.2/pnfs: Don't use READ_PLUS with pNFS yet
Merge tag 'nfs-rdma-for-5.11-1' of git://git.linux-
nfs.org/projects/anna/linux-nfs into linux-next
NFSv4/pnfs: Add tracing for the deviceid cache
pNFS/flexfiles: Avoid spurious layout returns in
ff_layout_choose_ds_for_read
NFS/pNFS: Fix a typo in ff_layout_resend_pnfs_read()

Zheng Yongjun (1):
fs/lockd: convert comma to semicolon

fs/lockd/host.c | 22 +-
fs/nfs/client.c | 8 +-
fs/nfs/dir.c | 719 +++++++++++++++++--------
---
fs/nfs/flexfilelayout/flexfilelayout.c | 17 +-
fs/nfs/fs_context.c | 21 +-
fs/nfs/inode.c | 9 +-
fs/nfs/internal.h | 6 -
fs/nfs/nfs2xdr.c | 19 +-
fs/nfs/nfs3proc.c | 83 ++--
fs/nfs/nfs3xdr.c | 29 +-
fs/nfs/nfs42proc.c | 69 ++-
fs/nfs/nfs42xdr.c | 102 ++--
fs/nfs/nfs4client.c | 2 +-
fs/nfs/nfs4file.c | 2 +-
fs/nfs/nfs4proc.c | 71 +--
fs/nfs/nfs4session.h | 2 +-
fs/nfs/nfs4super.c | 2 +-
fs/nfs/nfs4trace.h | 75 +++
fs/nfs/nfs4xdr.c | 48 +-
fs/nfs/pnfs.c | 33 +-
fs/nfs/pnfs.h | 7 +
fs/nfs/pnfs_dev.c | 23 +-
fs/nfs/pnfs_nfs.c | 105 ++---
fs/nfs/proc.c | 18 +-
include/linux/nfs_fs.h | 9 +-
include/linux/nfs_xdr.h | 17 +-
include/linux/sunrpc/xdr.h | 26 +-
include/linux/sunrpc/xprt.h | 3 +-
include/trace/events/rpcrdma.h | 450 +++++++++---------
net/sunrpc/auth_gss/gss_rpc_upcall.c | 15 +-
net/sunrpc/auth_gss/gss_rpc_xdr.c | 1 -
net/sunrpc/clnt.c | 5 +-
net/sunrpc/debugfs.c | 4 +-
net/sunrpc/sched.c | 65 +--
net/sunrpc/xdr.c | 822 +++++++++++++++++++++----
--------
net/sunrpc/xprt.c | 117 +++--
net/sunrpc/xprtrdma/backchannel.c | 6 +-
net/sunrpc/xprtrdma/frwr_ops.c | 81 ++--
net/sunrpc/xprtrdma/module.c | 1 +
net/sunrpc/xprtrdma/rpc_rdma.c | 72 +--
net/sunrpc/xprtrdma/transport.c | 8 +-
net/sunrpc/xprtrdma/verbs.c | 30 +-
net/sunrpc/xprtrdma/xprt_rdma.h | 9 +-
net/sunrpc/xprtsock.c | 7 +-
44 files changed, 1978 insertions(+), 1262 deletions(-)

--
Trond Myklebust
Linux NFS client maintainer, Hammerspace
trond.myklebust@xxxxxxxxxxxxxxx