public inbox for linux-nfs@vger.kernel.org
 help / color / mirror / Atom feed
* [for-6.13 PATCH 00/19] nfs/nfsd: fixes and improvements for LOCALIO
@ 2024-11-08 23:39 Mike Snitzer
  2024-11-08 23:39 ` [for-6.13 PATCH 01/19] nfs/localio: must clear res.replen in nfs_local_read_done Mike Snitzer
                   ` (19 more replies)
  0 siblings, 20 replies; 45+ messages in thread
From: Mike Snitzer @ 2024-11-08 23:39 UTC (permalink / raw)
  To: linux-nfs
  Cc: Anna Schumaker, Trond Myklebust, Chuck Lever, Jeff Layton,
	NeilBrown

Hi,

I really wanted to post these patches at the beginning of the week (or
sooner) but I had quite a few issues to work through.  The biggest
challenge came from trying to develop the final patch only to hit the
wall of needing to find and fix memory corruption with the first
patch.

HUGE special thanks to NeilBrown for helping me identify the source of
the NFSv3 LOCALIO memory corruption fixed by the first patch.  Anna,
we'd do well for that patch to land upstream for 6.12 final (but Trond
if it slips to the 6.13 merge window pull that should be fine, as the
Fixes: tag should get it to land in 6.12-stable).

The 2nd patch is also a fundamental fix but it is kernel config
dependant on whether you'll experience the RCU splat it fixes.

Patches 3 - 6 are cleanups I've been carrying since just after the
6.12 merge window.

Patch 7 adds a 'localio_O_DIRECT_semantics' nfs module parameter that
when set will allow the use of O_DIRECT from the LOCALIO client
through to the underlying filesystem.

Patches 8 and beyond are dealing with the leftover bake-a-thon
business of switching from caching LOCALIO's open nfsd_file in the
server to doing so in the client.  Definitely took some effort but the
end result is working really well.

This is quite a bit of change at the end of the 6.13 development
window, but I _think_ it worthy of considersation for 6.13 (the bulk
of the changes are confined to fs/nfs/localio.c and
fs/nfs_common/nfslocalio.c which are only built if LOCALIO Kconfig
options enabled (even general NFS code paths are all wrapped with
CONFIG_NFS_LOCALIO).

I'm happy to work through any issues found in review with urgency next
week (or this weekend if others are interested to look and happen to
find something).

Happy to take it as it comes, I'm in no way _pushing_ for these
changes to land for 6.13.  I'm just now comfortable posting them for
serious consideration.

Thanks,
Mike

Mike Snitzer (18):
  nfs_common: must not hold RCU while calling nfsd_file_put_local
  nfs/localio: remove redundant suid/sgid handling
  nfs/localio: eliminate unnecessary kref in nfs_local_fsync_ctx
  nfs/localio: remove extra indirect nfs_to call to check {read,write}_iter
  nfs/localio: eliminate need for nfs_local_fsync_work forward declaration
  nfs/localio: add direct IO enablement with sync and async IO support
  nfsd: add nfsd_file_{get,put} to 'nfs_to' nfsd_localio_operations
  nfs_common: rename functions that invalidate LOCALIO nfs_clients
  nfs_common: move localio_lock to new lock member of nfs_uuid_t
  nfs: cache all open LOCALIO nfsd_file(s) in client
  nfsd: update percpu_ref to manage references on nfsd_net
  nfsd: rename nfsd_serv_ prefixed methods and variables with nfsd_net_
  nfsd: nfsd_file_acquire_local no longer returns GC'd nfsd_file
  nfs_common: rename nfslocalio nfs_uuid_lock to nfs_uuids_lock
  nfs_common: track all open nfsd_files per LOCALIO nfs_client
  nfs_common: add nfs_localio trace events
  nfs: probe for LOCALIO when v4 client reconnects to server
  nfs: probe for LOCALIO when v3 client reconnects to server

NeilBrown (1):
  nfs/localio: must clear res.replen in nfs_local_read_done

 fs/nfs/client.c                        |   1 -
 fs/nfs/direct.c                        |   1 +
 fs/nfs/flexfilelayout/flexfilelayout.c |  29 ++-
 fs/nfs/flexfilelayout/flexfilelayout.h |   1 +
 fs/nfs/inode.c                         |   3 +
 fs/nfs/internal.h                      |  11 +-
 fs/nfs/localio.c                       | 319 ++++++++++++++++++-------
 fs/nfs/nfs3proc.c                      |  34 ++-
 fs/nfs/nfs4state.c                     |   1 +
 fs/nfs/pagelist.c                      |   5 +-
 fs/nfs/write.c                         |   3 +-
 fs/nfs_common/Makefile                 |   3 +-
 fs/nfs_common/localio_trace.c          |  10 +
 fs/nfs_common/localio_trace.h          |  56 +++++
 fs/nfs_common/nfslocalio.c             | 269 ++++++++++++++++-----
 fs/nfsd/filecache.c                    |  32 ++-
 fs/nfsd/filecache.h                    |   2 +-
 fs/nfsd/localio.c                      |   9 +-
 fs/nfsd/netns.h                        |  12 +-
 fs/nfsd/nfsctl.c                       |   6 +-
 fs/nfsd/nfssvc.c                       |  40 ++--
 include/linux/nfs_fs.h                 |  22 +-
 include/linux/nfs_fs_sb.h              |   3 +-
 include/linux/nfs_xdr.h                |   1 +
 include/linux/nfslocalio.h             |  65 +++--
 25 files changed, 712 insertions(+), 226 deletions(-)
 create mode 100644 fs/nfs_common/localio_trace.c
 create mode 100644 fs/nfs_common/localio_trace.h

-- 
2.44.0


^ permalink raw reply	[flat|nested] 45+ messages in thread

end of thread, other threads:[~2024-11-13 16:51 UTC | newest]

Thread overview: 45+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-11-08 23:39 [for-6.13 PATCH 00/19] nfs/nfsd: fixes and improvements for LOCALIO Mike Snitzer
2024-11-08 23:39 ` [for-6.13 PATCH 01/19] nfs/localio: must clear res.replen in nfs_local_read_done Mike Snitzer
2024-11-11  0:36   ` NeilBrown
2024-11-08 23:39 ` [for-6.13 PATCH 02/19] nfs_common: must not hold RCU while calling nfsd_file_put_local Mike Snitzer
2024-11-11  1:01   ` NeilBrown
2024-11-13 14:58   ` Jeff Layton
2024-11-13 16:51     ` Mike Snitzer
2024-11-08 23:39 ` [for-6.13 PATCH 03/19] nfs/localio: remove redundant suid/sgid handling Mike Snitzer
2024-11-11  1:09   ` NeilBrown
2024-11-08 23:39 ` [for-6.13 PATCH 04/19] nfs/localio: eliminate unnecessary kref in nfs_local_fsync_ctx Mike Snitzer
2024-11-11  1:15   ` NeilBrown
2024-11-08 23:39 ` [for-6.13 PATCH 05/19] nfs/localio: remove extra indirect nfs_to call to check {read,write}_iter Mike Snitzer
2024-11-11  1:20   ` NeilBrown
2024-11-11 15:09     ` Mike Snitzer
2024-11-08 23:39 ` [for-6.13 PATCH 06/19] nfs/localio: eliminate need for nfs_local_fsync_work forward declaration Mike Snitzer
2024-11-11  1:21   ` NeilBrown
2024-11-08 23:39 ` [for-6.13 PATCH 07/19] nfs/localio: add direct IO enablement with sync and async IO support Mike Snitzer
2024-11-11  1:31   ` NeilBrown
2024-11-12 14:31   ` Chuck Lever
2024-11-08 23:39 ` [for-6.13 PATCH 08/19] nfsd: add nfsd_file_{get,put} to 'nfs_to' nfsd_localio_operations Mike Snitzer
2024-11-08 23:39 ` [for-6.13 PATCH 09/19] nfs_common: rename functions that invalidate LOCALIO nfs_clients Mike Snitzer
2024-11-11  1:32   ` NeilBrown
2024-11-08 23:39 ` [for-6.13 PATCH 10/19] nfs_common: move localio_lock to new lock member of nfs_uuid_t Mike Snitzer
2024-11-11  1:55   ` NeilBrown
2024-11-11 15:33     ` Mike Snitzer
2024-11-11 20:35       ` NeilBrown
2024-11-11 22:27         ` Mike Snitzer
2024-11-11 23:23           ` NeilBrown
2024-11-12  0:16             ` Mike Snitzer
2024-11-12  0:49               ` NeilBrown
2024-11-12 14:36                 ` Chuck Lever
2024-11-12 23:13                   ` NeilBrown
2024-11-13  0:07                     ` Chuck Lever III
2024-11-13  0:32                       ` NeilBrown
2024-11-08 23:39 ` [for-6.13 PATCH 11/19] nfs: cache all open LOCALIO nfsd_file(s) in client Mike Snitzer
2024-11-08 23:39 ` [for-6.13 PATCH 12/19] nfsd: update percpu_ref to manage references on nfsd_net Mike Snitzer
2024-11-08 23:39 ` [for-6.13 PATCH 13/19] nfsd: rename nfsd_serv_ prefixed methods and variables with nfsd_net_ Mike Snitzer
2024-11-08 23:39 ` [for-6.13 PATCH 14/19] nfsd: nfsd_file_acquire_local no longer returns GC'd nfsd_file Mike Snitzer
2024-11-08 23:39 ` [for-6.13 PATCH 15/19] nfs_common: rename nfslocalio nfs_uuid_lock to nfs_uuids_lock Mike Snitzer
2024-11-08 23:39 ` [for-6.13 PATCH 16/19] nfs_common: track all open nfsd_files per LOCALIO nfs_client Mike Snitzer
2024-11-08 23:40 ` [for-6.13 PATCH 17/19] nfs_common: add nfs_localio trace events Mike Snitzer
2024-11-08 23:40 ` [for-6.13 PATCH 18/19] nfs: probe for LOCALIO when v4 client reconnects to server Mike Snitzer
2024-11-08 23:40 ` [for-6.13 PATCH 19/19] nfs: probe for LOCALIO when v3 " Mike Snitzer
2024-11-11  3:06   ` NeilBrown
2024-11-10 15:49 ` [for-6.13 PATCH 00/19] nfs/nfsd: fixes and improvements for LOCALIO Chuck Lever III

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox