From: Mike Snitzer <snitzer@kernel.org>
To: linux-nfs@vger.kernel.org
Cc: Anna Schumaker <anna@kernel.org>,
Trond Myklebust <trondmy@hammerspace.com>,
Chuck Lever <chuck.lever@oracle.com>,
Jeff Layton <jlayton@kernel.org>, NeilBrown <neilb@suse.de>
Subject: [for-6.13 PATCH 00/19] nfs/nfsd: fixes and improvements for LOCALIO
Date: Fri, 8 Nov 2024 18:39:43 -0500 [thread overview]
Message-ID: <20241108234002.16392-1-snitzer@kernel.org> (raw)
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
next reply other threads:[~2024-11-08 23:40 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-11-08 23:39 Mike Snitzer [this message]
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
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=20241108234002.16392-1-snitzer@kernel.org \
--to=snitzer@kernel.org \
--cc=anna@kernel.org \
--cc=chuck.lever@oracle.com \
--cc=jlayton@kernel.org \
--cc=linux-nfs@vger.kernel.org \
--cc=neilb@suse.de \
--cc=trondmy@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