Hi Steve, Here's 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 a couple of bugs in it also, including the RCU warning you were seeing. I'm seeing some slow calls, however, but I'm not sure how to debug them. RDMA also needs looking at, but I'm not sure how the RDMA API works. 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 fs/cifs/cifsencrypt.c | 40 +- fs/cifs/cifsfs.h | 3 + fs/cifs/cifsglob.h | 28 +- fs/cifs/cifsproto.h | 11 +- fs/cifs/cifssmb.c | 225 +++++--- fs/cifs/connect.c | 16 + fs/cifs/file.c | 1263 ++++++++++++++--------------------------- fs/cifs/misc.c | 109 ---- fs/cifs/smb2ops.c | 366 ++++++------ fs/cifs/smb2pdu.c | 12 +- fs/cifs/transport.c | 37 +- include/linux/uio.h | 8 + lib/iov_iter.c | 133 +++++ 13 files changed, 935 insertions(+), 1316 deletions(-)