This is the third version of this series. The main differences are:
1) fix up merge conflicts with Steve's for-next tree, mostly due to the
merge of more SMB2 patches.
2) the async read code has been converted not to do as much kmapping
We currently have a problem with the async write code on CONFIG_HIGHMEM
architectures. It uses *way* too much kmap space. Not only does this
limit throughput by adding an artificial bottleneck, but can lead to
deadlocks.
This patchset fixes this by making the code not kmap an entire array of
pages before attempting to send and receive it. Instead, pages are dealt
with one at a time so we only generally will have a single kmap in play
at a time.
I've tested this numerous ways and it seems to work as expected. Pavel
reviewed an earlier series. Some of these patches have seen some changes
but I've left his Reviewed-by's in place. Let me know if you want to
withdraw them.
It's probably too late now for the 3.6 merge window, but I'd like to see
this go into linux-next very soon so that it's ready for merge in 3.7.
Jeff Layton (15):
cifs: change signing routines to deal with smb_rqst structs
cifs: change smb2 signing routines to use smb_rqst structs
cifs: convert send code to use smb_rqst structs
cifs: cork the socket before a send and uncork it afterward
cifs: teach smb_send_rqst how to handle arrays of pages
cifs: teach signing routines how to deal with arrays of pages in a
smb_rqst
cifs: change cifs_call_async to use smb_rqst structs
cifs: convert async write code to pass in data via rq_pages array
cifs: remove the kmap size limit from wsize
cifs: add deprecation warning to sockopt=TCP_NODELAY option
cifs: allocate kvec array for cifs_readdata as a separate allocation
cifs: turn the pages list in cifs_readdata into an array
cifs: convert async read code to use pages array without kmapping
cifs: replace kvec array in readdata with a single kvec
cifs: remove kmap lock and rsize limit
fs/cifs/cifsencrypt.c | 37 +++++--
fs/cifs/cifsfs.c | 4 -
fs/cifs/cifsglob.h | 78 ++++++---------
fs/cifs/cifsproto.h | 25 +++--
fs/cifs/cifssmb.c | 106 +++++++++-----------
fs/cifs/connect.c | 7 +-
fs/cifs/file.c | 253 ++++++++++++++++++++++-------------------------
fs/cifs/smb1ops.c | 6 --
fs/cifs/smb2ops.c | 6 --
fs/cifs/smb2pdu.c | 65 ++++++------
fs/cifs/smb2proto.h | 13 ++-
fs/cifs/smb2transport.c | 83 ++++++++--------
fs/cifs/transport.c | 255 ++++++++++++++++++++++++++++++++++--------------
13 files changed, 503 insertions(+), 435 deletions(-)
--
1.7.11.2
--
To unsubscribe from this list: send the line "unsubscribe linux-cifs" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html