Re: [PATCH v2 0/7] NFS DIRECT: handle misaligned READ and WRITE for LOCALIO

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 7/23/25 2:40 PM, Mike Snitzer wrote:
> 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@xxxxxxxxxx/
>> (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.

I'm not quite following. Does that apply to non-Linux NFS clients too?


> 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@xxxxxxxxxx/
> [1]: https://lore.kernel.org/linux-nfs/20250723154351.59042-6-snitzer@xxxxxxxxxx/
> [2]: https://lore.kernel.org/linux-nfs/20250723154351.59042-1-snitzer@xxxxxxxxxx/
> 
>>
>> 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
>>
>>


-- 
Chuck Lever




[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux