Re: [PATCH v4 13/14] NFSD: Add a "default" block size

Jeff Layton
2025-04-28T21:07:31Z

On Mon, 2025-04-28 at 15:37 -0400, cel@kernel.org wrote:
> From: Chuck Lever <chuck.lever@oracle.com>
>
> We'd like to increase the maximum r/wsize that NFSD can support,
> but without introducing possible regressions. So let's add a
> default setting of 1MB. A subsequent patch will raise the
> maximum value but leave the default alone.
>
> No behavior change is expected.
>
> Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
> ---
> fs/nfsd/nfsd.h | 9 +++++++--
> fs/nfsd/nfssvc.c | 2 +-
> 2 files changed, 8 insertions(+), 3 deletions(-)
>
> diff --git a/fs/nfsd/nfsd.h b/fs/nfsd/nfsd.h
> index 2c85b3efe977..614971a700d8 100644
> --- a/fs/nfsd/nfsd.h
> +++ b/fs/nfsd/nfsd.h
> @@ -44,9 +44,14 @@ bool nfsd_support_version(int vers);
> #include "stats.h"
>
> /*
> - * Maximum blocksizes supported by daemon under various circumstances.
> + * Default and maximum payload size (NFS READ or WRITE), in bytes.
> + * The default is historical, and the maximum is an implementation
> + * limit.
> */
> -#define NFSSVC_MAXBLKSIZE RPCSVC_MAXPAYLOAD
> +enum {
> + NFSSVC_DEFBLKSIZE = 1 * 1024 * 1024,
> + NFSSVC_MAXBLKSIZE = RPCSVC_MAXPAYLOAD,
> +};
>
> struct readdir_cd {
> __be32 err; /* 0, nfserr, or nfserr_eof */
> diff --git a/fs/nfsd/nfssvc.c b/fs/nfsd/nfssvc.c
> index 9b3d6cff0e1e..692d2ef30db1 100644
> --- a/fs/nfsd/nfssvc.c
> +++ b/fs/nfsd/nfssvc.c
> @@ -582,7 +582,7 @@ static int nfsd_get_default_max_blksize(void)
> */
> target >>= 12;
>
> - ret = NFSSVC_MAXBLKSIZE;
> + ret = NFSSVC_DEFBLKSIZE;
> while (ret > target && ret >= 8*1024*2)
> ret /= 2;
> return ret;

Reviewed-by: Jeff Layton <jlayton@kernel.org>