kernel_samsung_a53x/fs/nfsd
Chuck Lever bf746ce977 NFSD: Reduce svc_rqst::rq_pages churn during READDIR operations
[ Upstream commit 76ed0dd96eeb2771b21bf5dcbd88326ef89ee0ed ]

During NFSv2 and NFSv3 READDIR/PLUS operations, NFSD advances
rq_next_page to the full size of the client-requested buffer, then
releases all those pages at the end of the request. The next request
to use that nfsd thread has to refill the pages.

NFSD does this even when the dirlist in the reply is small. With
NFSv3 clients that send READDIR operations with large buffer sizes,
that can be 256 put_page/alloc_page pairs per READDIR request, even
though those pages often remain unused.

We can save some work by not releasing dirlist buffer pages that
were not used to form the READDIR Reply. I've left the NFSv2 code
alone since there are never more than three pages involved in an
NFSv2 READDIR Reply.

Eventually we should nail down why these pages need to be released
at all in order to avoid allocating and releasing pages
unnecessarily.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-11-19 12:27:34 +01:00
..
acl.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
auth.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
auth.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
blocklayout.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
blocklayoutxdr.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
blocklayoutxdr.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
cache.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
current_stateid.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
export.c nfsd: report per-export stats 2024-11-19 12:27:31 +01:00
export.h nfsd: report per-export stats 2024-11-19 12:27:31 +01:00
fault_inject.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
filecache.c nfsd: Fix error return code in nfsd_file_cache_init() 2024-11-19 12:27:20 +01:00
filecache.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
flexfilelayout.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
flexfilelayoutxdr.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
flexfilelayoutxdr.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
idmap.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Kconfig NFSv4_2: SSC helper should use its own config. 2024-11-19 12:27:32 +01:00
lockd.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Makefile Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
netns.h nfsd: protect concurrent access to nfsd stats counters 2024-11-19 12:27:31 +01:00
nfs2acl.c NFSD: Update the NFSv2 ACL ACCESS argument decoder to use struct xdr_stream 2024-11-19 12:27:31 +01:00
nfs3acl.c NFSD: Update the NFSv2 SETACL argument decoder to use struct xdr_stream 2024-11-19 12:27:31 +01:00
nfs3proc.c NFSD: Reduce svc_rqst::rq_pages churn during READDIR operations 2024-11-19 12:27:34 +01:00
nfs3xdr.c NFSD: Remove unused NFSv3 directory entry encoders 2024-11-19 12:27:34 +01:00
nfs4acl.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
nfs4callback.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
nfs4idmap.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
nfs4layouts.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
nfs4proc.c NFSD: Extract the svcxdr_init_encode() helper 2024-11-19 12:27:33 +01:00
nfs4recover.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
nfs4state.c NFSD: Extract the svcxdr_init_encode() helper 2024-11-19 12:27:33 +01:00
nfs4xdr.c NFSD: Extract the svcxdr_init_encode() helper 2024-11-19 12:27:33 +01:00
nfscache.c nfsd: protect concurrent access to nfsd stats counters 2024-11-19 12:27:31 +01:00
nfsctl.c nfsd: report per-export stats 2024-11-19 12:27:31 +01:00
nfsd.h nfsd: report per-export stats 2024-11-19 12:27:31 +01:00
nfsfh.c NFSD: Update the GETATTR3res encoder to use struct xdr_stream 2024-11-19 12:27:33 +01:00
nfsfh.h NFSD: Update the GETATTR3res encoder to use struct xdr_stream 2024-11-19 12:27:33 +01:00
nfsproc.c NFSD: Add helper to set up the pages where the dirlist is encoded 2024-11-19 12:27:30 +01:00
nfssvc.c NFSD: Extract the svcxdr_init_encode() helper 2024-11-19 12:27:33 +01:00
nfsxdr.c NFSD: Clean up after updating NFSv2 ACL decoders 2024-11-19 12:27:31 +01:00
pnfs.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
state.h nfsd: simplify nfsd4_check_open_reclaim 2024-11-19 12:27:32 +01:00
stats.c nfsd: protect concurrent access to nfsd stats counters 2024-11-19 12:27:31 +01:00
stats.h nfsd: report per-export stats 2024-11-19 12:27:31 +01:00
trace.c NFSD: Add SPDX header for fs/nfsd/trace.c 2024-11-19 12:27:20 +01:00
trace.h NFSD: Add tracepoints in nfsd4_decode/encode_compound() 2024-11-19 12:27:20 +01:00
vfs.c namei: introduce struct renamedata 2024-11-19 12:27:33 +01:00
vfs.h NFSD: Update the NFSv3 ACCESS3res encoder to use struct xdr_stream 2024-11-19 12:27:33 +01:00
xdr.h NFSD: Clean up after updating NFSv2 ACL decoders 2024-11-19 12:27:31 +01:00
xdr3.h NFSD: Remove unused NFSv3 directory entry encoders 2024-11-19 12:27:34 +01:00
xdr4.h NFSD: Extract the svcxdr_init_encode() helper 2024-11-19 12:27:33 +01:00
xdr4cb.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00