linux/net/rds
Zach Brown f046011cd7 RDS/IB: track signaled sends
We're seeing bugs today where IB connection shutdown clears the send
ring while the tasklet is processing completed sends.  Implementation
details cause this to dereference a null pointer.  Shutdown needs to
wait for send completion to stop before tearing down the connection.  We
can't simply wait for the ring to empty because it may contain
unsignaled sends that will never be processed.

This patch tracks the number of signaled sends that we've posted and
waits for them to complete.  It also makes sure that the tasklet has
finished executing.

Signed-off-by: Zach Brown <zach.brown@oracle.com>
2010-09-08 18:16:40 -07:00
..
af_rds.c RDS: remove __init and __exit annotation 2010-09-08 18:16:39 -07:00
bind.c rds: Use RCU for the bind lookup searches 2010-09-08 18:15:08 -07:00
cong.c RDS: Bypass workqueue when queueing cong updates 2010-09-08 18:12:16 -07:00
connection.c RDS: remove __init and __exit annotation 2010-09-08 18:16:39 -07:00
ib_cm.c RDS/IB: track signaled sends 2010-09-08 18:16:40 -07:00
ib_rdma.c RDS: remove __init and __exit annotation 2010-09-08 18:16:39 -07:00
ib_recv.c RDS: remove __init and __exit annotation 2010-09-08 18:16:39 -07:00
ib_ring.c
ib_send.c RDS/IB: track signaled sends 2010-09-08 18:16:40 -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 __init and __exit annotation 2010-09-08 18:16:39 -07:00
ib.c RDS: remove __init and __exit annotation 2010-09-08 18:16:39 -07:00
ib.h RDS/IB: track signaled sends 2010-09-08 18:16:40 -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
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: remove __init and __exit annotation 2010-09-08 18:16:39 -07:00
iw_ring.c
iw_send.c RDS: Rename data op members prefix from m_ to op_ 2010-09-08 18:11:59 -07:00
iw_stats.c
iw_sysctl.c RDS: remove __init and __exit annotation 2010-09-08 18:16:39 -07:00
iw.c RDS: remove __init and __exit annotation 2010-09-08 18:16:39 -07:00
iw.h RDS: remove __init and __exit annotation 2010-09-08 18:16:39 -07:00
Kconfig
loop.c RDS: Stop supporting old cong map sending method 2010-09-08 18:12:10 -07:00
loop.h
Makefile
message.c rds: don't let RDS shutdown a connection while senders are present 2010-09-08 18:15:09 -07:00
page.c RDS: Use page_remainder_alloc() for recv bufs 2010-09-08 18:15:20 -07:00
rdma_transport.c RDS: remove __init and __exit annotation 2010-09-08 18:16:39 -07:00
rdma_transport.h
rdma.c RDS: Add flag for silent ops. Do atomic op before RDMA 2010-09-08 18:12:06 -07:00
rds.h RDS: remove __init and __exit annotation 2010-09-08 18:16:39 -07:00
recv.c RDS: Whitespace 2010-09-08 18:11:44 -07:00
send.c rds: fix rds_send_xmit() serialization 2010-09-08 18:15:27 -07:00
stats.c RDS: remove __init and __exit annotation 2010-09-08 18:16:39 -07:00
sysctl.c RDS: remove __init and __exit annotation 2010-09-08 18:16:39 -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: remove __init and __exit annotation 2010-09-08 18:16:39 -07:00
tcp_recv.c RDS: remove __init and __exit annotation 2010-09-08 18:16:39 -07:00
tcp_send.c RDS: Stop supporting old cong map sending method 2010-09-08 18:12:10 -07:00
tcp_stats.c
tcp.c RDS: remove __init and __exit annotation 2010-09-08 18:16:39 -07:00
tcp.h RDS: remove __init and __exit annotation 2010-09-08 18:16:39 -07:00
threads.c RDS: remove __init and __exit annotation 2010-09-08 18:16:39 -07:00
transport.c
xlist.h RDS: Remove unused XLIST_PTR_TAIL and xlist_protect() 2010-09-08 18:16:06 -07:00