linux_old1/net/rds
Chris Mason 3324412587 RDS/IB: Add caching of frags and incs
This patch is based heavily on an initial patch by Chris Mason.
Instead of freeing slab memory and pages, it keeps them, and
funnels them back to be reused.

The lock minimization strategy uses xchg and cmpxchg atomic ops
for manipulation of pointers to list heads. We anchor the lists with a
pointer to a list_head struct instead of a static list_head struct.
We just have to carefully use the existing primitives with
the difference between a pointer and a static head struct.

For example, 'list_empty()' means that our anchor pointer points to a list with
a single item instead of meaning that our static head element doesn't point to
any list items.

Original patch by Chris, with significant mods and fixes by Andy and Zach.

Signed-off-by: Chris Mason <chris.mason@oracle.com>
Signed-off-by: Andy Grover <andy.grover@oracle.com>
Signed-off-by: Zach Brown <zach.brown@oracle.com>
2010-09-08 18:15:23 -07:00
..
Kconfig RDS: Modularize RDMA and TCP transports 2009-08-23 19:13:09 -07:00
Makefile RDS: Modularize RDMA and TCP transports 2009-08-23 19:13:09 -07:00
af_rds.c rds: Use RCU for the bind lookup searches 2010-09-08 18:15:08 -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: introduce rds_conn_connect_if_down() 2010-09-08 18:15:18 -07:00
ib.c RDS/IB: disconnect when IB devices are removed 2010-09-08 18:15:19 -07:00
ib.h RDS/IB: Add caching of frags and incs 2010-09-08 18:15:23 -07:00
ib_cm.c RDS/IB: Add caching of frags and incs 2010-09-08 18:15:23 -07:00
ib_rdma.c RDS/IB: add refcount tracking to struct rds_ib_device 2010-09-08 18:15:17 -07:00
ib_recv.c RDS/IB: Add caching of frags and incs 2010-09-08 18:15:23 -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: get the xmit max_sge from the RDS IB device on the connection 2010-09-08 18:15:16 -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
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.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
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
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
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.c RDS: Add flag for silent ops. Do atomic op before RDMA 2010-09-08 18:12:06 -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
rds.h RDS: introduce rds_conn_connect_if_down() 2010-09-08 18:15:18 -07:00
recv.c RDS: Whitespace 2010-09-08 18:11:44 -07:00
send.c RDS: introduce rds_conn_connect_if_down() 2010-09-08 18:15:18 -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.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
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
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