nfsd: allocate new session-based DRC slots on demand.
authorNeilBrown <neilb@suse.de>
Wed, 11 Dec 2024 21:47:07 +0000 (08:47 +1100)
committerChuck Lever <chuck.lever@oracle.com>
Mon, 6 Jan 2025 14:37:38 +0000 (09:37 -0500)
commit60aa6564317db29ea72b6db821b5bbb45f1e879d
treed0ca7e4c63702dcd48d300536644f356f2936247
parent601c8cb349c2d9a3a6cea6f53e0bf838e2e60893
nfsd: allocate new session-based DRC slots on demand.

If a client ever uses the highest available slot for a given session,
attempt to allocate more slots so there is room for the client to use
them if wanted.  GFP_NOWAIT is used so if there is not plenty of
free memory, failure is expected - which is what we want.  It also
allows the allocation while holding a spinlock.

Each time we increase the number of slots by 20% (rounded up).  This
allows fairly quick growth while avoiding excessive over-shoot.

We would expect to stablise with around 10% more slots available than
the client actually uses.

Reviewed-by: Jeff Layton <jlayton@kernel.org>
Signed-off-by: NeilBrown <neilb@suse.de>
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
fs/nfsd/nfs4state.c