linux_dsm_epyc7002/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 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/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 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: remove __init and __exit annotation 2010-09-08 18:16:39 -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: 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 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: 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 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: 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 RDS: Add TCP transport to RDS 2009-08-23 19:13:02 -07:00
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 RDS: Track transports via an array, not a list 2009-08-23 19:13:12 -07:00
xlist.h RDS: Remove unused XLIST_PTR_TAIL and xlist_protect() 2010-09-08 18:16:06 -07:00