cifs: clean up wsize negotiation and allow for larger wsize
authorJeff Layton <jlayton@redhat.com>
Thu, 19 May 2011 20:22:58 +0000 (16:22 -0400)
committerSteve French <sfrench@us.ibm.com>
Wed, 25 May 2011 20:12:16 +0000 (20:12 +0000)
commitf7910cbd9fa319ee4501074f1f3b5ce23c4b1518
tree940a9f9836771d2b8820dff93010457ed3e0444c
parentc3d17b63e5eafcaf2678c11de801c189468631c8
cifs: clean up wsize negotiation and allow for larger wsize

Now that we can handle larger wsizes in writepages, fix up the
negotiation of the wsize to allow for that. find_get_pages only seems to
give out a max of 256 pages at a time, so that gives us a reasonable
default of 1M for the wsize.

If the server however does not support large writes via POSIX
extensions, then we cap the wsize to (128k - PAGE_CACHE_SIZE). That
gives us a size that goes up to the max frame size specified in RFC1001.

Finally, if CAP_LARGE_WRITE_AND_X isn't set, then further cap it to the
largest size allowed by the protocol (USHRT_MAX).

Signed-off-by: Jeff Layton <jlayton@redhat.com>
Reviewed-and-Tested-by: Pavel Shilovsky <piastry@etersoft.ru>
Signed-off-by: Steve French <sfrench@us.ibm.com>
fs/cifs/connect.c