[PATCH v13 0/8] netfs: Miscellaneous preparatory changes
From: David Howells
Date: Wed Sep 09 2026 - 03:33:23 EST
Hi Christian,
Could you pull these patches please for -next? This is the first of four
batches. This is based on your vfs.fixes as there are some prerequisite
patches there. This was split from v11 of a larger series[1].
This a collection of miscellaneous modifications to netfslib that I want to
make ahead of bigger changes, including:
(1) Convert "unsigned long long" to "uoff_t". This makes it a little more
obvious as to the meaning of the value. Also convert some "loff_t" to
"uoff_t" as most of the time it's used the value really should never
be negative.
(2) Remove the writethrough code as the locking is really tricky to get
right and it looks like it could deadlock with Ceph if snapshots are
used.
(3) Adjust some tracepoints, including adding the cache object ID to
certain tracepoinits.
(4) Make use of PG_private_2 opt-in. Use of PG_private_2 is deprecated
and the MM people would like their page bit back, so we need to stop
using it soon.
(5) Add some helper functions to handle the barriering needed for the
NETFS_RREQ_ALL_QUEUED flag.
(6) Set the subrequest type at allocation time so that the allocation
trace records the proposed type.
The patches can also be found here:
https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git/log/?h=netfs-next-1
Thanks,
David
Changes
=======
ver #13)
- Fixed some sashiko-raised issues:
- Fixed netfs_mark_copy_to_cache() to use netfs_using_pgpriv2() rather
than checking NETFS_RREQ_USE_PGPRIV2.
- Fixed netfs_all_subreqs_queued() to do smp_mb__after_atomic() after
setting the NETFS_RREQ_ALL_QUEUED bit.
- Fixed netfs_single_dispatch_read() to not immediately contradict its
own initialisation of subreq->source.
ver #12)
- Split from v11 of "netfs: Keep track of folios in a segmented bio_vec[]
chain"[1]
[1] https://lore.kernel.org/r/20260902173350.3468672-1-dhowells@xxxxxxxxxx/
[2] https://sashiko.dev/#/patchset/20260908091031.1506798-1-dhowells%40redhat.com
David Howells (8):
netfs: Use uoff_t instead of unsigned long long and loff_t
netfs: Remove the writethrough code
netfs: trace: Change the "clear" folio traces to "endwb"
netfs: trace: Rejig a couple of the tracepoints
netfs: Add the cache object ID to netfs_read/write tracepoints
netfs: Make deprecated PG_private_2 support opt-in
netfs: Add some functions to wrap the all-queued handling
netfs: Set subrequest->source at alloc before trace emission
fs/9p/vfs_addr.c | 1 -
fs/afs/file.c | 5 +-
fs/cachefiles/interface.c | 10 +--
fs/cachefiles/internal.h | 4 +-
fs/cachefiles/io.c | 25 +++---
fs/ceph/Kconfig | 1 +
fs/ceph/addr.c | 4 +-
fs/netfs/Kconfig | 3 +
fs/netfs/Makefile | 2 +-
fs/netfs/buffered_read.c | 37 ++++-----
fs/netfs/buffered_write.c | 66 +++------------
fs/netfs/direct_read.c | 14 ++--
fs/netfs/direct_write.c | 8 +-
fs/netfs/fscache_cookie.c | 8 +-
fs/netfs/fscache_io.c | 10 +--
fs/netfs/internal.h | 68 ++++++++++++---
fs/netfs/iterator.c | 2 +-
fs/netfs/main.c | 1 -
fs/netfs/misc.c | 10 +--
fs/netfs/objects.c | 6 +-
fs/netfs/read_collect.c | 14 ++--
fs/netfs/read_pgpriv2.c | 13 ++-
fs/netfs/read_retry.c | 5 +-
fs/netfs/read_single.c | 12 +--
fs/netfs/stats.c | 4 +-
fs/netfs/write_collect.c | 25 +++---
fs/netfs/write_issue.c | 123 ++-------------------------
fs/netfs/write_retry.c | 5 +-
fs/nfs/Kconfig | 1 +
include/linux/fscache-cache.h | 2 +-
include/linux/fscache.h | 36 ++++----
include/linux/netfs.h | 80 +++++++++---------
include/trace/events/cachefiles.h | 30 +++----
include/trace/events/fscache.h | 10 +--
include/trace/events/netfs.h | 134 +++++++++++++++---------------
35 files changed, 326 insertions(+), 453 deletions(-)