[GIT PULL] Please pull NFS client changes for 5.7

From: Trond Myklebust
Date: Tue Apr 07 2020 - 08:23:26 EST


Hi Linus,

The following changes since commit fb33c6510d5595144d585aa194d377cf74d31911:

Linux 5.6-rc6 (2020-03-15 15:01:23 -0700)

are available in the Git repository at:

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

for you to fetch changes up to 93ce4af774bc3d8a72ce2271d03241c96383629d:

NFS: Clean up process of marking inode stale. (2020-04-06 13:56:33 -0400)

Cheers,
Trond

----------------------------------------------------------------
NFS client updates for Linux 5.7

Highlights include:

Stable fixes:
- Fix a page leak in nfs_destroy_unlinked_subrequests()
- Fix use-after-free issues in nfs_pageio_add_request()
- Fix new mount code constant_table array definitions
- finish_automount() requires us to hold 2 refs to the mount record

Features:
- Improve the accuracy of telldir/seekdir by using 64-bit cookies when
possible.
- Allow one RDMA active connection and several zombie connections to
prevent blocking if the remote server is unresponsive.
- Limit the size of the NFS access cache by default
- Reduce the number of references to credentials that are taken by NFS
- pNFS files and flexfiles drivers now support per-layout segment
COMMIT lists.
- Enable partial-file layout segments in the pNFS/flexfiles driver.
- Add support for CB_RECALL_ANY to the pNFS flexfiles layout type
- pNFS/flexfiles Report NFS4ERR_DELAY and NFS4ERR_GRACE errors from
the DS using the layouterror mechanism.

Bugfixes and cleanups:
- SUNRPC: Fix krb5p regressions
- Don't specify NFS version in "UDP not supported" error
- nfsroot: set tcp as the default transport protocol
- pnfs: Return valid stateids in nfs_layout_find_inode_by_stateid()
- alloc_nfs_open_context() must use the file cred when available
- Fix locking when dereferencing the delegation cred
- Fix memory leaks in O_DIRECT when nfs_get_lock_context() fails
- Various clean ups of the NFS O_DIRECT commit code
- Clean up RDMA connect/disconnect
- Replace zero-length arrays with C99-style flexible arrays

----------------------------------------------------------------
Chuck Lever (15):
sunrpc: Fix gss_unwrap_resp_integ() again
SUNRPC: Remove xdr_buf_read_mic()
SUNRPC: Trim stack utilization in the wrap and unwrap paths
xprtrdma: Enhance MR-related trace points
xprtrdma: Invoke rpcrdma_ep_create() in the connect worker
xprtrdma: Refactor frwr_init_mr()
xprtrdma: Clean up the post_send path
xprtrdma: Refactor rpcrdma_ep_connect() and rpcrdma_ep_disconnect()
xprtrdma: Allocate Protection Domain in rpcrdma_ep_create()
xprtrdma: Invoke rpcrdma_ia_open in the connect worker
xprtrdma: Remove rpcrdma_ia::ri_flags
xprtrdma: Disconnect on flushed completion
xprtrdma: Merge struct rpcrdma_ia into struct rpcrdma_ep
xprtrdma: Extract sockaddr from struct rdma_cm_id
xprtrdma: kmalloc rpcrdma_ep separate from rpcrdma_xprt

Colin Ian King (1):
SUNRPC: remove redundant assignments to variable status

Gustavo A. R. Silva (1):
nfs: Replace zero-length array with flexible-array member

Liwei Song (1):
nfsroot: set tcp as the default transport protocol

Misono Tomohiro (1):
NFS: direct.c: Fix memory leak of dreq when nfs_get_lock_context fails

Murphy Zhou (1):
NFSv4.2: error out when relink swapfile

Olga Kornievskaia (1):
SUNRPC: fix krb5p mount to provide large enough buffer in rq_rcvsize

Petr Vorel (1):
NFS: Don't specify NFS version in "UDP not supported" error

Scott Mayhew (1):
NFS: Fix a few constant_table array definitions

Trond Myklebust (63):
NFS: Use the 64-bit server readdir cookies when possible
NFSv4: nfs_update_inplace_delegation() should update delegation cred
NFSv4/pnfs: pnfs_set_layout_stateid() should update the layout cred
NFS: Ensure we time out if a delegreturn does not complete
NFS: alloc_nfs_open_context() must use the file cred when available
SUNRPC: Add a flag to avoid reference counts on credentials
SUNRPC: Don't take a reference to the cred on synchronous tasks
NFS: Assume cred is pinned by open context in I/O requests
NFSv4: Avoid referencing the cred unnecessarily during NFSv4 I/O
NFSv4: Avoid unnecessary credential references in layoutget
NFS: Avoid referencing the cred twice in async rename/unlink
NFS: Limit the size of the access cache by default
pNFS/flexfiles: Report DELAY and GRACE errors from the DS to the server
NFSv4/pnfs: Return valid stateids in nfs_layout_find_inode_by_stateid()
NFSv4: Ensure layout headers are RCU safe
NFSv4/pnfs: Clean up nfs_layout_find_inode()
NFS: Add a helper nfs_client_for_each_server()
NFSv4: Clean up nfs_client_return_marked_delegations()
NFSv4: Clean up nfs_delegation_reap_unclaimed()
NFSv4: Clean up nfs_delegation_reap_expired()
NFSv4: Add support for CB_RECALL_ANY for flexfiles layouts
nfs: Fix up documentation in nfs_follow_referral() and nfs_do_submount()
pNFS/flexfiles: Simplify allocation of the mirror array
NFS/pNFS: Refactor pnfs_generic_commit_pagelist()
pNFS: Add a helper to allocate the array of buckets
NFSv4/pnfs: Support a list of commit arrays in struct pnfs_ds_commit_info
NFSv4/pNFS: Scan the full list of commit arrays when committing
pNFS: Support per-layout segment commits in pnfs_generic_recover_commit_reqs()
pNFS: Support per-layout segment commits in pnfs_generic_commit_pagelist()
NFS/pNFS: Allow O_DIRECT to release the DS commitinfo
NFS: commit errors should be fatal
NFS: Fix O_DIRECT commit verifier handling
NFS/pNFS: Support commit arrays in nfs_clear_pnfs_ds_commit_verifiers()
pNFS: Add infrastructure for cleaning up per-layout commit structures
pNFS: Enable per-layout segment commit structures
NFS/pNFS: Add a helper pnfs_generic_search_commit_reqs()
NFS: Remove bucket array from struct pnfs_ds_commit_info
NFS/pNFS: Clean up pNFS commit operations
NFS/pNFS: Simplify bucket layout segment reference counting
NFS/pNFS: Fix pnfs_layout_mark_request_commit() invalid layout segment handling
pNFS/flexfile: Don't merge layout segments if the mirrors don't match
pNFS/flexfiles: Check the layout segment range before doing I/O
pNFS/flexfiles: remove requirement for whole file layouts
pNFS/flexfiles: Specify the layout segment range in LAYOUTGET
NFS: Remove unused FLUSH_SYNC support in nfs_initiate_pgio()
Merge tag 'nfs-rdma-for-5.7-1' of git://git.linux-nfs.org/projects/anna/linux-nfs
NFS: Fix a page leak in nfs_destroy_unlinked_subrequests()
NFS: Fix races nfs_page_group_destroy() vs nfs_destroy_unlinked_subrequests()
NFS: Fix use-after-free issues in nfs_pageio_add_request()
NFS: Fix a request reference leak in nfs_direct_write_clear_reqs()
NFS: Fix memory leaks in nfs_pageio_stop_mirroring()
NFS: Remove the redundant function nfs_pgio_has_mirroring()
NFS: Clean up nfs_lock_and_join_requests()
NFS: Reverse the submission order of requests in __nfs_pageio_add_request()
NFS: Refactor nfs_lock_and_join_requests()
NFS: Try to join page groups before an O_DIRECT retransmission
NFS: finish_automount() requires us to hold 2 refs to the mount record
NFS: Add a module parameter to set nfs_mountpoint_expiry_timeout
NFS: Beware when dereferencing the delegation cred
NFS/pnfs: Fix dereference of layout cred in pnfs_layoutcommit_inode()
NFS/pnfs: Reference the layout cred in pnfs_prepare_layoutreturn()
SUNRPC: Don't start a timer on an already queued rpc task
NFS: Clean up process of marking inode stale.

Zhouyi Zhou (1):
NFS:remove redundant call to nfs_do_access

fs/nfs/blocklayout/blocklayout.c | 2 +-
fs/nfs/callback.h | 4 +-
fs/nfs/callback_proc.c | 69 ++--
fs/nfs/delegation.c | 319 +++++++--------
fs/nfs/dir.c | 79 ++--
fs/nfs/direct.c | 197 ++++------
fs/nfs/filelayout/filelayout.c | 165 +++-----
fs/nfs/flexfilelayout/flexfilelayout.c | 229 +++++------
fs/nfs/flexfilelayout/flexfilelayout.h | 2 +-
fs/nfs/fs_context.c | 9 +-
fs/nfs/inode.c | 28 +-
fs/nfs/internal.h | 36 +-
fs/nfs/namespace.c | 67 +++-
fs/nfs/nfs4_fs.h | 4 +-
fs/nfs/nfs4file.c | 3 +
fs/nfs/nfs4namespace.c | 2 +-
fs/nfs/nfs4proc.c | 19 +-
fs/nfs/nfs4state.c | 24 +-
fs/nfs/nfs4trace.h | 8 +-
fs/nfs/nfsroot.c | 2 +-
fs/nfs/nfstrace.h | 1 +
fs/nfs/pagelist.c | 367 +++++++++++-------
fs/nfs/pnfs.c | 241 +++++++++---
fs/nfs/pnfs.h | 143 +++++--
fs/nfs/pnfs_nfs.c | 514 ++++++++++++++++++-------
fs/nfs/read.c | 2 +-
fs/nfs/super.c | 35 ++
fs/nfs/unlink.c | 4 +-
fs/nfs/write.c | 276 +++++++------
include/linux/nfs_fs.h | 1 +
include/linux/nfs_page.h | 5 +
include/linux/nfs_xdr.h | 32 +-
include/linux/sunrpc/sched.h | 1 +
include/linux/sunrpc/xdr.h | 1 -
include/trace/events/rpcrdma.h | 153 +++-----
net/sunrpc/auth_gss/auth_gss.c | 94 +++--
net/sunrpc/clnt.c | 8 +-
net/sunrpc/sched.c | 22 +-
net/sunrpc/xdr.c | 55 ---
net/sunrpc/xprtrdma/backchannel.c | 8 +-
net/sunrpc/xprtrdma/frwr_ops.c | 154 ++++----
net/sunrpc/xprtrdma/rpc_rdma.c | 32 +-
net/sunrpc/xprtrdma/transport.c | 72 ++--
net/sunrpc/xprtrdma/verbs.c | 683 ++++++++++++---------------------
net/sunrpc/xprtrdma/xprt_rdma.h | 89 ++---
net/sunrpc/xprtsock.c | 2 +-
46 files changed, 2305 insertions(+), 1958 deletions(-)
--
Trond Myklebust
Linux NFS client maintainer, Hammerspace
trond.myklebust@xxxxxxxxxxxxxxx