Hi Steve, Here's a third version of a subset of my cifs-experimental branch. It alters the cifs driver to pass iov_iters down to the lowest layers where they can be passed to the network transport. ver #3) - I fixed some things in the RDMA interface after running xfstests. It now correctly chops up requests so that they'll actually fit within the available SGE slots, both for short and bulk requests. - I also fixed both the cifs_readahead and cifs_writepages algorithms, so those now work properly - and I found and fixed a memory leak too. cifs over softRoCE RDMA got as far as generic/138 before the RXE driver deadlocked itself. I've posted a bug report for that. Lockdep spotted the bug right away on mount. cifs over softIWarp RDMA got as far as generic/006 before triggering a UAF in the reconnect code, spotted by KASAN. Both this and the above fail on the vanilla kernel also. Beyond the 6 main patches, there are two patches which add some trace points (if they look of interest to you, I can properly fill out the commit log) and the patch to make softiwarp work - all three of which can be dropped. I've pushed the patches here also: https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git/log/?h=cifs-for-sfrench David --- David Howells (8): iov_iter: Add a function to extract an iter's buffers to a bvec iter iov_iter: Add a general purpose iteration function cifs: Add some helper functions cifs: Add a function to read into an iter from a socket cifs: Change the I/O paths to use an iterator rather than a page list cifs: Remove unused code cifs: Trace writedata page wrangling cifs: Add some RDMA send tracepoints Namjae Jeon (1): cifs, ksmbd: Fix MAX_SGE count for softiwarp fs/cifs/cifsencrypt.c | 40 +- fs/cifs/cifsfs.h | 6 + fs/cifs/cifsglob.h | 29 +- fs/cifs/cifsproto.h | 11 +- fs/cifs/cifssmb.c | 276 +++++-- fs/cifs/connect.c | 16 + fs/cifs/file.c | 1434 ++++++++++++++----------------------- fs/cifs/fscache.c | 22 +- fs/cifs/fscache.h | 10 +- fs/cifs/misc.c | 109 --- fs/cifs/smb2ops.c | 367 +++++----- fs/cifs/smb2pdu.c | 44 +- fs/cifs/smbdirect.c | 335 ++++----- fs/cifs/smbdirect.h | 6 +- fs/cifs/trace.h | 161 +++++ fs/cifs/transport.c | 37 +- fs/ksmbd/transport_rdma.c | 2 +- include/linux/uio.h | 8 + lib/iov_iter.c | 133 ++++ 19 files changed, 1470 insertions(+), 1576 deletions(-)