On Mon, 2025-04-28 at 15:36 -0400, cel@xxxxxxxxxx wrote: > From: Chuck Lever <chuck.lever@xxxxxxxxxx> > > Clean up: The documenting comment for NFSD_BUFSIZE is quite stale. > NFSD_BUFSIZE is used only for NFSv4 Reply these days; never for > NFSv2 or v3, and never for RPC Calls. Even so, the byte count > estimate does not include the size of the NFSv4 COMPOUND Reply > HEADER or the RPC auth flavor. > > Signed-off-by: Chuck Lever <chuck.lever@xxxxxxxxxx> > --- > fs/nfsd/nfs4proc.c | 2 +- > fs/nfsd/nfs4state.c | 2 +- > fs/nfsd/nfs4xdr.c | 2 +- > fs/nfsd/nfsd.h | 13 ------------- > 4 files changed, 3 insertions(+), 16 deletions(-) > > diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c > index b397246dae7b..59451b405b5c 100644 > --- a/fs/nfsd/nfs4proc.c > +++ b/fs/nfsd/nfs4proc.c > @@ -3832,7 +3832,7 @@ static const struct svc_procedure nfsd_procedures4[2] = { > .pc_ressize = sizeof(struct nfsd4_compoundres), > .pc_release = nfsd4_release_compoundargs, > .pc_cachetype = RC_NOCACHE, > - .pc_xdrressize = NFSD_BUFSIZE/4, > + .pc_xdrressize = 3+NFSSVC_MAXBLKSIZE/4, > .pc_name = "COMPOUND", > }, > }; > diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c > index 59a693f22452..8adcee9dc4d3 100644 > --- a/fs/nfsd/nfs4state.c > +++ b/fs/nfsd/nfs4state.c > @@ -4402,7 +4402,7 @@ nfsd4_sequence(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, > nfserr_rep_too_big; > if (xdr_restrict_buflen(xdr, buflen - rqstp->rq_auth_slack)) > goto out_put_session; > - svc_reserve(rqstp, buflen); > + svc_reserve_auth(rqstp, buflen); > > status = nfs_ok; > /* Success! accept new slot seqid */ > diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c > index 44e7fb34f433..ac1bc2431f27 100644 > --- a/fs/nfsd/nfs4xdr.c > +++ b/fs/nfsd/nfs4xdr.c > @@ -2564,7 +2564,7 @@ nfsd4_decode_compound(struct nfsd4_compoundargs *argp) > /* Sessions make the DRC unnecessary: */ > if (argp->minorversion) > cachethis = false; > - svc_reserve(argp->rqstp, max_reply + readbytes); > + svc_reserve_auth(argp->rqstp, max_reply + readbytes); > argp->rqstp->rq_cachetype = cachethis ? RC_REPLBUFF : RC_NOCACHE; > > argp->splice_ok = nfsd_read_splice_ok(argp->rqstp); > diff --git a/fs/nfsd/nfsd.h b/fs/nfsd/nfsd.h > index e2997f0ffbc5..91d144655351 100644 > --- a/fs/nfsd/nfsd.h > +++ b/fs/nfsd/nfsd.h > @@ -50,19 +50,6 @@ bool nfsd_support_version(int vers); > /* NFSv2 is limited by the protocol specification, see RFC 1094 */ > #define NFSSVC_MAXBLKSIZE_V2 (8*1024) > > - > -/* > - * Largest number of bytes we need to allocate for an NFS > - * call or reply. Used to control buffer sizes. We use > - * the length of v3 WRITE, READDIR and READDIR replies > - * which are an RPC header, up to 26 XDR units of reply > - * data, and some page data. > - * > - * Note that accuracy here doesn't matter too much as the > - * size is rounded up to a page size when allocating space. > - */ > -#define NFSD_BUFSIZE ((RPC_MAX_HEADER_WITH_AUTH+26)*XDR_UNIT + NFSSVC_MAXBLKSIZE) > - > struct readdir_cd { > __be32 err; /* 0, nfserr, or nfserr_eof */ > }; Reviewed-by: Jeff Layton <jlayton@xxxxxxxxxx>