Hi Steve, Here's a second 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. I've fixed the RDMA code to work, fixed a few more bugs and addressed most of checkpatch moans. Note that there's a bunch of stuff #if'd out in patch 5 that get removed in patch 6 - otherwise diff produces an awful mess. There's also a couple of changes in patch 7 from Namjae Jeon to make soft-iWarp work. Feel free to discard that patch if you get a better version from him. 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 (6): 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 Namjae Jeon (1): cifs, ksmbd: Fix MAX_SGE count for softiwarp fs/cifs/cifsencrypt.c | 40 +- fs/cifs/cifsfs.h | 3 + fs/cifs/cifsglob.h | 29 +- fs/cifs/cifsproto.h | 11 +- fs/cifs/cifssmb.c | 253 +++++--- fs/cifs/connect.c | 16 + fs/cifs/file.c | 1269 ++++++++++++------------------------- fs/cifs/fscache.c | 22 +- fs/cifs/fscache.h | 10 +- fs/cifs/misc.c | 109 ---- fs/cifs/smb2ops.c | 367 ++++++----- fs/cifs/smb2pdu.c | 35 +- fs/cifs/smbdirect.c | 317 ++++----- fs/cifs/smbdirect.h | 6 +- fs/cifs/transport.c | 37 +- fs/ksmbd/transport_rdma.c | 2 +- include/linux/uio.h | 8 + lib/iov_iter.c | 133 ++++ 18 files changed, 1124 insertions(+), 1543 deletions(-)