aboutsummaryrefslogtreecommitdiff
path: root/Documentation
diff options
context:
space:
mode:
authorDavid Miller <davem@davemloft.net>2010-11-10 21:56:39 -0800
committerDavid Teigland <teigland@redhat.com>2010-11-11 13:05:12 -0600
commitb36930dd508e00f0c5083bcd57d25de6d0375c76 (patch)
tree802e874ff1f53289250c13ac260a8df033b8f47d /Documentation
parentf6614b7bb405a9b35dd28baea989a749492c46b2 (diff)
dlm: Handle application limited situations properly.
In the normal regime where an application uses non-blocking I/O writes on a socket, they will handle -EAGAIN and use poll() to wait for send space. They don't actually sleep on the socket I/O write. But kernel level RPC layers that do socket I/O operations directly and key off of -EAGAIN on the write() to "try again later" don't use poll(), they instead have their own sleeping mechanism and rely upon ->sk_write_space() to trigger the wakeup. So they do effectively sleep on the write(), but this mechanism alone does not let the socket layers know what's going on. Therefore they must emulate what would have happened, otherwise TCP cannot possibly see that the connection is application window size limited. Handle this, therefore, like SUNRPC by setting SOCK_NOSPACE and bumping the ->sk_write_count as needed when we hit the send buffer limits. This should make TCP send buffer size auto-tuning and the ->sk_write_space() callback invocations actually happen. Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: David Teigland <teigland@redhat.com>
Diffstat (limited to 'Documentation')
0 files changed, 0 insertions, 0 deletions