From: Mike Snitzer <snitzer@kernel.org>
To: Trond Myklebust <trond.myklebust@hammerspace.com>,
Anna Schumaker <anna.schumaker@oracle.com>
Cc: linux-nfs@vger.kernel.org, Chuck Lever <chuck.lever@oracle.com>,
Jeff Layton <jlayton@kernel.org>
Subject: Re: [PATCH v2 0/7] NFS DIRECT: handle misaligned READ and WRITE for LOCALIO
Date: Wed, 23 Jul 2025 14:40:19 -0400 [thread overview]
Message-ID: <aIEskxZEnEq1qK80@kernel.org> (raw)
In-Reply-To: <20250722024924.49877-1-snitzer@kernel.org>
On Mon, Jul 21, 2025 at 10:49:17PM -0400, Mike Snitzer wrote:
> Hi,
>
> This "NFS DIRECT" series depends on the "NFSD DIRECT" series here:
> https://lore.kernel.org/linux-nfs/20250714224216.14329-1-snitzer@kernel.org/
> (for the benefit of nfsd_file_dio_alignment patch in this series)
>
> The first patch was posted as part of a LOCALIO revert series I posted
> a week or so ago, thankfully that series isn't needed thanks to Trond
> and Neil's efforts. BUT the first patch is needed, has Reviewed-by
> from Jeff and Neil and is marked for stable@.
>
> The biggest change in v2 is the introduction of O_DIRECT misaligned
> READ and WRITE handling for the benefit of LOCALIO. Please see patches
> 6 and 7 for more details.
Turns out that these NFS client (fs/nfs/direct.c) changes that focused
on benefiting LOCALIO actually also benefit NFSD if/when it is
configured to use O_DIRECT [0].
Such that the NFS client's O_DIRECT code will split any misaligned
WRITE IO and NFSD will then happily issue the DIO-aligned "middle" of
a given misaligned WRITE IO down to the underlying filesystem.
Same goes for READ, NFS client will expand the front of any misaligned
READ such that the bulk of the IO becomes DIO-aligned (only the final
partial tail page is misaligned).
So with the NFS client changes in this series we actually don't _need_
NFSD to have the same type of misaligned IO analysis and handling to
expand READs or split WRITEs to be DIO-aligned. Which reduces work
that NFSD needs to do by leaning on the NFS client having the
capability.
Which means that we _could_ drop the more complicated NFSD misaligned
READ change (last patch [1]) from the v4 NFSD DIRECT patchset I just
posted [2]. And just do the basic NFSD enablement for DIRECT and
DONTCACHE (so we'd still need the v4 NFSD patchest's patches 1-4).
Thanks,
Mike
[0]: https://lore.kernel.org/linux-nfs/20250723154351.59042-1-snitzer@kernel.org/
[1]: https://lore.kernel.org/linux-nfs/20250723154351.59042-6-snitzer@kernel.org/
[2]: https://lore.kernel.org/linux-nfs/20250723154351.59042-1-snitzer@kernel.org/
>
> Changes since v1:
> - renamed nfs modparam from localio_O_DIRECT_align_misaligned_READ to
> localio_O_DIRECT_align_misaligned_IO (is used for misaligned READ
> and WRITE support in fs/nfs/direct.c)
> - added misaligned O_DIRECT handling for both READ and WRITE to
> fs/nfs/direct.c which in practice obviates LOCALIO's need to
> fallback to sending misaligned READs to NFSD.
> - But the 5th patch that adds LOCALIO support to fallback to NFSD is a
> useful backup mechanism (that will hopefully never be needed unless
> some fs/nfs/direct.c bug gets introduced in the future). Patch 5
> also provides refactoring that is useful.
>
> Thanks,
> Mike
>
> Mike Snitzer (7):
> nfs/localio: avoid bouncing LOCALIO if nfs_client_is_local()
> nfs/localio: make trace_nfs_local_open_fh more useful
> nfs/localio: add nfsd_file_dio_alignment
> nfs/localio: refactor iocb initialization
> nfs/localio: fallback to NFSD for misaligned O_DIRECT READs
> nfs/direct: add misaligned READ handling
> nfs/direct: add misaligned WRITE handling
>
> fs/nfs/direct.c | 262 +++++++++++++++++++++++--
> fs/nfs/flexfilelayout/flexfilelayout.c | 1 +
> fs/nfs/internal.h | 17 +-
> fs/nfs/localio.c | 231 ++++++++++++++--------
> fs/nfs/nfstrace.h | 47 ++++-
> fs/nfs/pagelist.c | 22 ++-
> fs/nfsd/localio.c | 11 ++
> include/linux/nfs_page.h | 1 +
> include/linux/nfslocalio.h | 2 +
> 9 files changed, 485 insertions(+), 109 deletions(-)
>
> --
> 2.44.0
>
>
next prev parent reply other threads:[~2025-07-23 18:40 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-07-22 2:49 [PATCH v2 0/7] NFS DIRECT: handle misaligned READ and WRITE for LOCALIO Mike Snitzer
2025-07-22 2:49 ` [PATCH v2 1/7] nfs/localio: avoid bouncing LOCALIO if nfs_client_is_local() Mike Snitzer
2025-07-22 2:49 ` [PATCH v2 2/7] nfs/localio: make trace_nfs_local_open_fh more useful Mike Snitzer
2025-07-22 2:49 ` [PATCH v2 3/7] nfs/localio: add nfsd_file_dio_alignment Mike Snitzer
2025-07-22 2:49 ` [PATCH v2 4/7] nfs/localio: refactor iocb initialization Mike Snitzer
2025-07-22 2:49 ` [PATCH v2 5/7] nfs/localio: fallback to NFSD for misaligned O_DIRECT READs Mike Snitzer
2025-07-22 2:49 ` [PATCH v2 6/7] nfs/direct: add misaligned READ handling Mike Snitzer
2025-07-22 2:49 ` [PATCH v2 7/7] nfs/direct: add misaligned WRITE handling Mike Snitzer
2025-07-23 18:40 ` Mike Snitzer [this message]
2025-07-23 18:42 ` [PATCH v2 0/7] NFS DIRECT: handle misaligned READ and WRITE for LOCALIO Chuck Lever
2025-07-23 23:53 ` Mike Snitzer
2025-07-23 23:58 ` Mike Snitzer
2025-07-24 13:28 ` Chuck Lever
2025-07-24 19:39 ` Mike Snitzer
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=aIEskxZEnEq1qK80@kernel.org \
--to=snitzer@kernel.org \
--cc=anna.schumaker@oracle.com \
--cc=chuck.lever@oracle.com \
--cc=jlayton@kernel.org \
--cc=linux-nfs@vger.kernel.org \
--cc=trond.myklebust@hammerspace.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).