kernel-ark/net/rds
Chris Mason 9e29db0e36 RDS: Use a generation counter to avoid rds_send_xmit loop
rds_send_xmit is required to loop around after it releases the lock
because someone else could done a trylock, found someone working on the
list and backed off.

But, once we drop our lock, it is possible that someone else does come
in and make progress on the list.  We should detect this and not loop
around if another process is actually working on the list.

This patch adds a generation counter that is bumped every time we
get the lock and do some send work.  If the retry notices someone else
has bumped the generation counter, it does not need to loop around and
continue working.

Signed-off-by: Chris Mason <chris.mason@oracle.com>
Signed-off-by: Andy Grover <andy.grover@oracle.com>
2010-09-08 18:12:24 -07:00
..
af_rds.c RDS: fold rdma.h into rds.h 2010-09-08 18:11:37 -07:00
bind.c RDS: cleanup: remove "== NULL"s and "!= NULL"s in ptr comparisons 2010-09-08 18:11:32 -07:00
cong.c RDS: Bypass workqueue when queueing cong updates 2010-09-08 18:12:16 -07:00
connection.c RDS: Use a generation counter to avoid rds_send_xmit loop 2010-09-08 18:12:24 -07:00
ib_cm.c RDS: Refill recv ring directly from tasklet 2010-09-08 18:12:11 -07:00
ib_rdma.c RDS: Implement atomic operations 2010-09-08 18:11:41 -07:00
ib_recv.c RDS: Refill recv ring directly from tasklet 2010-09-08 18:12:11 -07:00
ib_ring.c RDS/IW+IB: Set recv ring low water mark to 1/2 full. 2009-04-09 17:21:14 -07:00
ib_send.c RDS: Move atomic stats from general to ib-specific area 2010-09-08 18:12:20 -07:00
ib_stats.c RDS: Move atomic stats from general to ib-specific area 2010-09-08 18:12:20 -07:00
ib_sysctl.c RDS: Remove unsignaled_bytes sysctl 2010-09-08 18:11:52 -07:00
ib.c RDS: Stop supporting old cong map sending method 2010-09-08 18:12:10 -07:00
ib.h RDS: Move atomic stats from general to ib-specific area 2010-09-08 18:12:20 -07:00
info.c RDS: cleanup: remove "== NULL"s and "!= NULL"s in ptr comparisons 2010-09-08 18:11:32 -07:00
info.h RDS: Info and stats 2009-02-26 23:39:25 -08:00
iw_cm.c RDS: cleanup: remove "== NULL"s and "!= NULL"s in ptr comparisons 2010-09-08 18:11:32 -07:00
iw_rdma.c RDS: fold rdma.h into rds.h 2010-09-08 18:11:37 -07:00
iw_recv.c RDS: inc_purge() transport function unused - remove it 2010-09-08 18:11:46 -07:00
iw_ring.c RDS/IW+IB: Set recv ring low water mark to 1/2 full. 2009-04-09 17:21:14 -07:00
iw_send.c RDS: Rename data op members prefix from m_ to op_ 2010-09-08 18:11:59 -07:00
iw_stats.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu 2009-09-15 09:39:44 -07:00
iw_sysctl.c RDS: cleanup: remove "== NULL"s and "!= NULL"s in ptr comparisons 2010-09-08 18:11:32 -07:00
iw.c RDS: Stop supporting old cong map sending method 2010-09-08 18:12:10 -07:00
iw.h RDS: Remove struct rds_rdma_op 2010-09-08 18:11:58 -07:00
Kconfig RDS: Modularize RDMA and TCP transports 2009-08-23 19:13:09 -07:00
loop.c RDS: Stop supporting old cong map sending method 2010-09-08 18:12:10 -07:00
loop.h RDS: loopback 2009-02-26 23:39:26 -08:00
Makefile RDS: Modularize RDMA and TCP transports 2009-08-23 19:13:09 -07:00
message.c RDS: Do wait_event_interruptible instead of wait_event 2010-09-08 18:12:22 -07:00
page.c RDS: cleanup: remove "== NULL"s and "!= NULL"s in ptr comparisons 2010-09-08 18:11:32 -07:00
rdma_transport.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2010-04-27 12:49:13 -07:00
rdma_transport.h RDS: Common RDMA transport code 2009-02-26 23:39:33 -08:00
rdma.c RDS: Add flag for silent ops. Do atomic op before RDMA 2010-09-08 18:12:06 -07:00
rds.h RDS: Use a generation counter to avoid rds_send_xmit loop 2010-09-08 18:12:24 -07:00
recv.c RDS: Whitespace 2010-09-08 18:11:44 -07:00
send.c RDS: Use a generation counter to avoid rds_send_xmit loop 2010-09-08 18:12:24 -07:00
stats.c RDS: Move atomic stats from general to ib-specific area 2010-09-08 18:12:20 -07:00
sysctl.c RDS: cleanup: remove "== NULL"s and "!= NULL"s in ptr comparisons 2010-09-08 18:11:32 -07:00
tcp_connect.c RDS: cleanup: remove "== NULL"s and "!= NULL"s in ptr comparisons 2010-09-08 18:11:32 -07:00
tcp_listen.c RDS: cleanup: remove "== NULL"s and "!= NULL"s in ptr comparisons 2010-09-08 18:11:32 -07:00
tcp_recv.c RDS: inc_purge() transport function unused - remove it 2010-09-08 18:11:46 -07:00
tcp_send.c RDS: Stop supporting old cong map sending method 2010-09-08 18:12:10 -07:00
tcp_stats.c RDS: Add TCP transport to RDS 2009-08-23 19:13:02 -07:00
tcp.c RDS: Stop supporting old cong map sending method 2010-09-08 18:12:10 -07:00
tcp.h RDS: Stop supporting old cong map sending method 2010-09-08 18:12:10 -07:00
threads.c RDS: cleanup: remove "== NULL"s and "!= NULL"s in ptr comparisons 2010-09-08 18:11:32 -07:00
transport.c RDS: Track transports via an array, not a list 2009-08-23 19:13:12 -07:00