linux/fs/dlm
David Miller b36930dd50 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>
2010-11-11 13:05:12 -06:00
..
ast.c dlm: fix ordering of bast and cast 2010-02-24 11:46:53 -06:00
ast.h dlm: fix ordering of bast and cast 2010-02-24 11:46:53 -06:00
config.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
config.h
debug_fs.c llseek: automatically add .llseek fop 2010-10-15 15:53:27 +02:00
dir.c dlm: always use GFP_NOFS 2009-11-30 16:34:43 -06:00
dir.h
dlm_internal.h dlm: fix ordering of bast and cast 2010-02-24 11:46:53 -06:00
Kconfig
lock.c dlm: Don't send callback to node making lock request when "try 1cb" fails 2010-09-03 10:10:47 -05:00
lock.h
lockspace.c Driver core: Constify struct sysfs_ops in struct kobj_type 2010-03-07 17:04:49 -08:00
lockspace.h dlm: detect available userspace daemon 2008-08-28 11:49:43 -05:00
lowcomms.c dlm: Handle application limited situations properly. 2010-11-11 13:05:12 -06:00
lowcomms.h dlm: connect to nodes earlier 2009-05-15 09:34:12 -05:00
lvb_table.h
main.c
Makefile
member.c Fix misspellings of "truly" in comments. 2010-02-04 11:55:45 +01:00
member.h
memory.c dlm: always use GFP_NOFS 2009-11-30 16:34:43 -06:00
memory.h
midcomms.c dlm: fix up memory allocation flags 2008-12-23 10:15:40 -06:00
midcomms.h
netlink.c dlm: use genl_register_family_with_ops() 2010-08-05 14:22:01 -05:00
plock.c llseek: automatically add .llseek fop 2010-10-15 15:53:27 +02:00
rcom.c dlm: always use GFP_NOFS 2009-11-30 16:34:43 -06:00
rcom.h
recover.c dlm: change rsbtbl rwlock to spinlock 2009-01-08 15:12:39 -06:00
recover.h
recoverd.c
recoverd.h
requestqueue.c dlm: always use GFP_NOFS 2009-11-30 16:34:43 -06:00
requestqueue.h
user.c llseek: automatically add .llseek fop 2010-10-15 15:53:27 +02:00
user.h dlm: fix ordering of bast and cast 2010-02-24 11:46:53 -06:00
util.c
util.h