linux/net
Tom Tucker 5c635e09ce RPCRDMA: Fix FRMR registration/invalidate handling.
When the rpc_memreg_strategy is 5, FRMR are used to map RPC data.
This mode uses an FRMR to map the RPC data, then invalidates
(i.e. unregisers) the data in xprt_rdma_free. These FRMR are used
across connections on the same mount, i.e. if the connection goes
away on an idle timeout and reconnects later, the FRMR are not
destroyed and recreated.

This creates a problem for transport errors because the WR that
invalidate an FRMR may be flushed (i.e. fail) leaving the
FRMR valid. When the FRMR is later used to map an RPC it will fail,
tearing down the transport and starting over. Over time, more and
more of the FRMR pool end up in the wrong state resulting in
seemingly random disconnects.

This fix keeps track of the FRMR state explicitly by setting it's
state based on the successful completion of a reg/inv WR. If the FRMR
is ever used and found to be in the wrong state, an invalidate WR
is prepended, re-syncing the FRMR state and avoiding the connection loss.

Signed-off-by: Tom Tucker <tom@ogc.us>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
2011-03-11 15:39:27 -05:00
..
9p
802
8021q
appletalk
atm
ax25
batman-adv batman-adv: Linearize fragment packets before merge 2011-02-08 00:54:31 +01:00
bluetooth Bluetooth: Release BTM while sleeping to avoid deadlock 2011-02-16 15:54:11 -03:00
bridge bridge: Use IPv6 link-local address for multicast listener queries 2011-02-22 10:07:29 -08:00
caif net/caif: Fix dangling list pointer in freed object on error. 2011-02-08 14:31:31 -08:00
can
ceph libceph: fix msgr standby handling 2011-03-04 12:25:05 -08:00
core net: handle addr_type of 0 properly 2011-02-25 13:58:54 -08:00
dcb net: dcbnl: check correct ops in dcbnl_ieee_set() 2011-03-02 15:04:33 -08:00
dccp dccp: fix oops on Reset after close 2011-03-01 23:02:07 -08:00
decnet
dns_resolver DNS: Fix a NULL pointer deref when trying to read an error key [CVE-2011-1076] 2011-03-04 09:56:19 +11:00
dsa module: fix missing semicolons in MODULE macro usage 2011-01-24 14:32:54 +10:30
econet econet: remove compiler warnings 2011-01-27 14:15:54 -08:00
ethernet
ieee802154
ipv4 tcp: undo_retrans counter fixes 2011-02-21 11:31:18 -08:00
ipv6 sysctl: ipv6: use correct net in ipv6_sysctl_rtcache_flush 2011-02-25 11:01:56 -08:00
ipx
irda
iucv
key
l2tp
lapb
llc
mac80211 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 2011-02-22 11:53:05 -08:00
netfilter netfilter: nf_log: avoid oops in (un)bind with invalid nfproto values 2011-03-02 12:10:13 +01:00
netlabel
netlink netlink: handle errors from netlink_dump() 2011-02-28 12:18:12 -08:00
netrom
packet
phonet
rds
rfkill kconfig: rename CONFIG_EMBEDDED to CONFIG_EXPERT 2011-01-20 17:02:05 -08:00
rose
rxrpc Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 2011-03-03 15:43:15 -08:00
sched net: Fix more stale on-stack list_head objects. 2011-02-20 11:49:45 -08:00
sctp sctp: fix reporting of unknown parameters 2011-02-19 19:06:55 -08:00
sunrpc RPCRDMA: Fix FRMR registration/invalidate handling. 2011-03-11 15:39:27 -05:00
tipc
unix
wanrouter
wimax
wireless Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 2011-02-22 11:53:05 -08:00
x25 x25: Do not reference freed memory. 2011-02-09 22:36:13 -08:00
xfrm xfrm: avoid possible oopse in xfrm_alloc_dst 2011-02-10 23:08:33 -08:00
compat.c
Kconfig
Makefile
nonet.c
socket.c
sysctl_net.c
TUNABLE