[PATCH 00/14] cifs: Iterators, netfslib and folios

From: David Howells
Date: Wed Apr 06 2022 - 19:03:08 EST



Here's a set of patches to make the following changes to the cifs
filesystem driver:

(1) Convert cifs to use I/O iterators to pass data/buffers from the the VM
interface layer down to the socket rather than passing page lists
about.

(2) Convert cifs to use netfslib for buffered and direct read operations.

(3) A partial conversion to folios.

This branch is built on top of my netfs-lib branch[1].

The patches can be found here also:

https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git/log/?h=cifs-experimental


David

Link: https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git/log/?h=netfs-lib [1]
---
David Howells (14):
cifs: Add some helper functions
cifs: Add a function to read into an iter from a socket
cifs: Check the IOCB_DIRECT flag, not O_DIRECT
cifs: Change the I/O paths to use an iterator rather than a page list
cifs: Remove unused code
cifs: Use netfslib to handle reads
cifs: Share server EOF pos with netfslib
netfs: Allow the netfs to make the io (sub)request alloc larger
cifs: Put credits into cifs_io_subrequest, not on the stack
cifs: Hold the open file on netfs_io_request, not netfs_io_subrequest
cifs: Clamp length according to credits and rsize
cifs: Expose netfs subrequest debug ID and index in read tracepoints
cifs: Split the smb3_add_credits tracepoint
mm, netfs, fscache: Stop read optimisation when folio removed from pagecache


fs/afs/file.c | 1 +
fs/afs/inode.c | 1 +
fs/afs/internal.h | 2 +
fs/cifs/Kconfig | 1 +
fs/cifs/cifsencrypt.c | 40 +-
fs/cifs/cifsfs.c | 11 +-
fs/cifs/cifsfs.h | 6 +-
fs/cifs/cifsglob.h | 53 +-
fs/cifs/cifsproto.h | 13 +-
fs/cifs/cifssmb.c | 252 +++--
fs/cifs/connect.c | 18 +-
fs/cifs/file.c | 2096 ++++++++++-----------------------------
fs/cifs/fscache.c | 120 +--
fs/cifs/fscache.h | 70 --
fs/cifs/inode.c | 22 +-
fs/cifs/misc.c | 109 --
fs/cifs/smb2ops.c | 387 ++++----
fs/cifs/smb2pdu.c | 85 +-
fs/cifs/smb2proto.h | 2 +-
fs/cifs/trace.h | 151 ++-
fs/cifs/transport.c | 41 +-
fs/netfs/internal.h | 1 +
fs/netfs/io.c | 7 +-
fs/netfs/misc.c | 13 +-
fs/netfs/stats.c | 9 +-
include/linux/fs.h | 2 +
include/linux/netfs.h | 1 +
include/linux/pagemap.h | 1 +
mm/filemap.c | 15 +
29 files changed, 1203 insertions(+), 2327 deletions(-)