Message ID | 20221130203047.1303804-1-anna@kernel.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | NFS: Allow very small rsize & wsize again | expand |
On Wed, 2022-11-30 at 15:30 -0500, Anna Schumaker wrote: > From: Anna Schumaker <Anna.Schumaker@Netapp.com> > > 940261a19508 introduced nfs_io_size() to clamp the iosize to a multiple > of PAGE_SIZE. This had the unintended side effect of no longer allowing > iosizes less than a page, which could be useful in some situations. > > UDP already has an exception that causes it to fall back on the > power-of-two style sizes instead. This patch adds an additional > exception for very small iosizes. > > Reported-by: Jeff Layton <jlayton@kernel.org> > Fixes: 940261a19508 ("NFS: Allow setting rsize / wsize to a multiple of PAGE_SIZE") > Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com> > --- > fs/nfs/internal.h | 6 ++---- > 1 file changed, 2 insertions(+), 4 deletions(-) > > diff --git a/fs/nfs/internal.h b/fs/nfs/internal.h > index 647fc3f547cb..ae7d4a8c728c 100644 > --- a/fs/nfs/internal.h > +++ b/fs/nfs/internal.h > @@ -739,12 +739,10 @@ unsigned long nfs_io_size(unsigned long iosize, enum xprt_transports proto) > iosize = NFS_DEF_FILE_IO_SIZE; > else if (iosize >= NFS_MAX_FILE_IO_SIZE) > iosize = NFS_MAX_FILE_IO_SIZE; > - else > - iosize = iosize & PAGE_MASK; > > - if (proto == XPRT_TRANSPORT_UDP) > + if (proto == XPRT_TRANSPORT_UDP || iosize < PAGE_SIZE) > return nfs_block_bits(iosize, NULL); > - return iosize; > + return iosize & PAGE_MASK; > } > > /* Looks good. Thanks, Anna. Reviewed-by: Jeff Layton <jlayton@kernel.org>
diff --git a/fs/nfs/internal.h b/fs/nfs/internal.h index 647fc3f547cb..ae7d4a8c728c 100644 --- a/fs/nfs/internal.h +++ b/fs/nfs/internal.h @@ -739,12 +739,10 @@ unsigned long nfs_io_size(unsigned long iosize, enum xprt_transports proto) iosize = NFS_DEF_FILE_IO_SIZE; else if (iosize >= NFS_MAX_FILE_IO_SIZE) iosize = NFS_MAX_FILE_IO_SIZE; - else - iosize = iosize & PAGE_MASK; - if (proto == XPRT_TRANSPORT_UDP) + if (proto == XPRT_TRANSPORT_UDP || iosize < PAGE_SIZE) return nfs_block_bits(iosize, NULL); - return iosize; + return iosize & PAGE_MASK; } /*