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 it also can
lead to deadlocks.
Late in the 3.5 cycle, I sent some patches to limit the rsize and wsize
on these arches as a temporary workaround. This patchset is a first pass
at fixing this the right way, by teaching the low-level transport code
how to deal with arrays of pages.
Note that this is just a fix for the write codepaths. The read side will
need a separate set of patches.
The code seems to work correctly, and is probably suitable for the
upcoming 3.6 merge window. This probably also has some non-trivial
conflicts with Pavel's patches since I did not base this on top of his
SMB2 work.
Let me know what you plan to merge first for 3.6 and I can try to
fix those up, or we can ask Pavel to rebase his code on top of this.
Jeff Layton (11):
cifs: remove bogus reset of smb_buf_length in smb_send routines
cifs: rename cifs_sign_smb2 to cifs_sign_smbv
cifs: change signing routines to deal with 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
fs/cifs/cifsencrypt.c | 39 +++++++--
fs/cifs/cifsproto.h | 37 ++++++--
fs/cifs/cifssmb.c | 53 ++++++------
fs/cifs/connect.c | 10 ++-
fs/cifs/file.c | 47 ++--------
fs/cifs/transport.c | 227 ++++++++++++++++++++++++++++++++++++-------------
6 files changed, 264 insertions(+), 149 deletions(-)
--
1.7.10.4
--
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