linux/fs/nfs
NeilBrown 0a1ee3c932 nfsd: don't use sv_nrthreads in connection limiting calculations.
[ Upstream commit eccbbc7c00 ]

The heuristic for limiting the number of incoming connections to nfsd
currently uses sv_nrthreads - allowing more connections if more threads
were configured.

A future patch will allow number of threads to grow dynamically so that
there will be no need to configure sv_nrthreads.  So we need a different
solution for limiting connections.

It isn't clear what problem is solved by limiting connections (as
mentioned in a code comment) but the most likely problem is a connection
storm - many connections that are not doing productive work.  These will
be closed after about 6 minutes already but it might help to slow down a
storm.

This patch adds a per-connection flag XPT_PEER_VALID which indicates
that the peer has presented a filehandle for which it has some sort of
access.  i.e the peer is known to be trusted in some way.  We now only
count connections which have NOT been determined to be valid.  There
should be relative few of these at any given time.

If the number of non-validated peer exceed a limit - currently 64 - we
close the oldest non-validated peer to avoid having too many of these
useless connections.

Note that this patch significantly changes the meaning of the various
configuration parameters for "max connections".  The next patch will
remove all of these.

Signed-off-by: NeilBrown <neilb@suse.de>
Reviewed-by: Jeff Layton <jlayton@kernel.org>
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Stable-dep-of: 898374fdd7 ("nfsd: unregister with rpcbind when deleting a transport")
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2025-10-19 16:34:03 +02:00
..
blocklayout pNFS: Fix uninited ptr deref in block/scsi layout 2025-08-20 18:30:50 +02:00
filelayout nfs: don't share pNFS DS connections between net namespaces 2025-06-04 14:43:52 +02:00
flexfilelayout NFSv4/flexfiles: Fix layout merge mirror check. 2025-09-19 16:35:44 +02:00
cache_lib.c NFS client updates for Linux 4.15 2017-11-17 14:18:00 -08:00
cache_lib.h NFS client updates for Linux 4.15 2017-11-17 14:18:00 -08:00
callback.c nfsd: don't use sv_nrthreads in connection limiting calculations. 2025-10-19 16:34:03 +02:00
callback.h NFSv4: Add CB_GETATTR support for delegated attributes 2024-07-08 13:47:25 -04:00
callback_proc.c pNFS: Add a flag argument to pnfs_destroy_layouts_byclid() 2024-07-08 13:47:26 -04:00
callback_xdr.c nfsd: don't use sv_nrthreads in connection limiting calculations. 2025-10-19 16:34:03 +02:00
client.c NFSv4: Clear the NFS_CAP_XATTR flag if not supported by the server 2025-09-19 16:35:43 +02:00
delegation.c NFSv4: Check for delegation validity in nfs_start_delegation_return_locked() 2025-05-29 11:02:03 +02:00
delegation.h NFSv4: Fix a deadlock when recovering state on a sillyrenamed file 2025-03-07 18:25:27 +01:00
dir.c NFS: Fix wakeup of __nfs_lookup_revalidate() in unblock_revalidate() 2025-08-15 12:14:04 +02:00
direct.c fs/nfs/io: make nfs_start_io_*() killable 2025-09-19 16:35:44 +02:00
dns_resolve.c NFS: Move common includes outside ifdef 2023-08-24 13:24:15 -04:00
dns_resolve.h NFS: Avoid memcpy() run-time warning for struct sockaddr overflows 2022-10-27 15:52:10 -04:00
export.c NFS: Fix filehandle bounds checking in nfs_fh_to_dentry() 2025-08-15 12:14:04 +02:00
file.c NFS: nfs_invalidate_folio() must observe the offset and size arguments 2025-09-19 16:35:44 +02:00
fs_context.c nfs: add 'noalignwrite' option for lock-less 'lost writes' prevention 2024-09-23 15:03:13 -04:00
fscache.c nfs: Fix oops in nfs_netfs_init_request() when copying to cache 2025-01-17 13:40:34 +01:00
fscache.h netfs: Speed up buffered reading 2024-09-12 12:20:41 +02:00
getroot.c nfs: fix the comment of nfs_get_root 2024-09-23 15:03:13 -04:00
inode.c NFS: Serialise O_DIRECT i/o and truncate() 2025-09-19 16:35:44 +02:00
internal.h NFS: Serialise O_DIRECT i/o and truncate() 2025-09-19 16:35:44 +02:00
io.c NFS: Serialise O_DIRECT i/o and truncate() 2025-09-19 16:35:44 +02:00
iostat.h mm: add comments for allocation helpers explaining why they are macros 2024-07-12 15:52:20 -07:00
Kconfig nfs: add missing selections of CONFIG_CRC32 2025-04-25 10:47:50 +02:00
localio.c nfs/localio: restore creds before releasing pageio data 2025-09-19 16:35:43 +02:00
Makefile nfs: add LOCALIO support 2024-09-23 15:03:30 -04:00
mount_clnt.c NFS: remove unused struct 'mnt_fhstatus' 2024-07-08 13:47:24 -04:00
namespace.c fs: pass the request_mask to generic_fillattr 2023-08-09 08:56:36 +02:00
netns.h nfs: make the rpc_stat per net namespace 2024-03-09 09:14:51 -05:00
nfs.h nfs: move nfs4_xattr_handlers to .rodata 2023-10-09 16:24:20 +02:00
nfs2super.c fs: nfs: add missing MODULE_DESCRIPTION() macros 2024-07-08 13:47:24 -04:00
nfs2xdr.c nfs_common: factor out nfs_errtbl and nfs_stat_to_errno 2024-09-23 15:03:29 -04:00
nfs3_fs.h fs: drop unused posix acl handlers 2023-03-06 09:57:12 +01:00
nfs3acl.c Mainly singleton patches all over the place. Series of note are: 2023-04-27 19:57:00 -07:00
nfs3client.c NFS: enable nconnect for RDMA 2024-03-09 09:14:51 -05:00
nfs3proc.c NFS: Don't allow waiting for exiting tasks 2025-05-29 11:02:03 +02:00
nfs3super.c fs: nfs: add missing MODULE_DESCRIPTION() macros 2024-07-08 13:47:24 -04:00
nfs3xdr.c nfs_common: factor out nfs_errtbl and nfs_stat_to_errno 2024-09-23 15:03:29 -04:00
nfs4_fs.h nfs: simplify and guarantee owner uniqueness. 2024-09-23 15:03:12 -04:00
nfs4client.c NFS: Fix the setting of capabilities when automounting a new filesystem 2025-08-20 18:30:14 +02:00
nfs4file.c NFSv4.2: Serialise O_DIRECT i/o and clone range 2025-09-19 16:35:44 +02:00
nfs4getroot.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
nfs4idmap.c cred: Do not default to init_cred in prepare_kernel_cred() 2022-11-01 10:04:52 -07:00
nfs4idmap.h NFS: Move nfs_idmap.h into fs/nfs/ 2015-04-23 15:16:14 -04:00
nfs4namespace.c NFS: Avoid memcpy() run-time warning for struct sockaddr overflows 2022-10-27 15:52:10 -04:00
nfs4proc.c NFSv4.1: fix backchannel max_resp_sz verification check 2025-10-15 12:00:16 +02:00
nfs4renewd.c treewide: remove editor modelines and cruft 2021-05-07 00:26:34 -07:00
nfs4session.c NFSv4: Sanity check the parameters in nfs41_update_target_slotid() 2021-11-07 09:23:14 -05:00
nfs4session.h nfs: add missing selections of CONFIG_CRC32 2025-04-25 10:47:50 +02:00
nfs4state.c NFSv4: Treat ENETUNREACH errors as fatal for state recovery 2025-05-29 11:02:06 +02:00
nfs4super.c fs: nfs: add missing MODULE_DESCRIPTION() macros 2024-07-08 13:47:24 -04:00
nfs4sysctl.c fs: Remove the now superfluous sentinel elements from ctl_table array 2023-12-28 04:57:57 -08:00
nfs4trace.c nfs/blocklayout: SCSI layout trace points for reservation key reg/unreg 2024-07-08 13:47:27 -04:00
nfs4trace.h nfs/blocklayout: SCSI layout trace points for reservation key reg/unreg 2024-07-08 13:47:27 -04:00
nfs4xdr.c NFS: fix open_owner_id_maxsz and related fields. 2025-04-10 14:39:24 +02:00
nfs42.h NFSv4.2: fix listxattr maximum XDR buffer size 2024-02-28 16:18:18 -05:00
nfs42proc.c NFSv4.2: Serialise O_DIRECT i/o and copy range 2025-09-19 16:35:44 +02:00
nfs42xattr.c mm, slab: remove last vestiges of SLAB_MEM_SPREAD 2024-03-12 20:32:19 -07:00
nfs42xdr.c NFSv4.2: fix COPY_NOTIFY xdr buf size calculation 2025-02-08 09:57:59 +01:00
nfsroot.c NFS: Fix an off by one in root_nfs_cat() 2024-03-09 09:14:51 -05:00
nfstrace.c NFSv4: Catch and trace server filehandle encoding errors 2021-04-14 09:36:29 -04:00
nfstrace.h nfs: add LOCALIO support 2024-09-23 15:03:30 -04:00
pagelist.c NFS: Fix a race when updating an existing write 2025-08-28 16:31:05 +02:00
pnfs.c pNFS: Handle RPC size limit for layoutcommits 2025-08-20 18:30:50 +02:00
pnfs.h nfs: don't share pNFS DS connections between net namespaces 2025-06-04 14:43:52 +02:00
pnfs_dev.c nfs: remove the unused max_deviceinfo_size field from struct pnfs_layoutdriver_type 2024-07-10 13:23:17 -04:00
pnfs_nfs.c nfs: don't share pNFS DS connections between net namespaces 2025-06-04 14:43:52 +02:00
proc.c Return the delegation when deleting sillyrenamed files 2024-07-08 13:47:26 -04:00
read.c fs/nfs/read: fix double-unlock bug in nfs_return_empty_folio() 2025-06-27 11:11:15 +01:00
super.c nfs: ignore SB_RDONLY when remounting nfs 2025-06-19 15:32:08 +02:00
symlink.c nfs: Remove calls to folio_set_error 2024-05-31 12:31:41 +02:00
sysctl.c fs: Remove the now superfluous sentinel elements from ctl_table array 2023-12-28 04:57:57 -08:00
sysfs.c NFS: Shut down the nfs_client only after all the superblocks 2025-04-10 14:39:26 +02:00
sysfs.h NFS: Add sysfs links to sunrpc clients for nfs_clients 2023-06-19 15:04:13 -04:00
unlink.c Return the delegation when deleting sillyrenamed files 2024-07-08 13:47:26 -04:00
write.c NFS: nfs_invalidate_folio() must observe the offset and size arguments 2025-09-19 16:35:44 +02:00