linux/net/rds
Sowmini Varadhan 905dd4184e RDS: TCP: Track peer's connection generation number
The RDS transport has to be able to distinguish between
two types of failure events:
(a) when the transport fails (e.g., TCP connection reset)
    but the RDS socket/connection layer on both sides stays
    the same
(b) when the peer's RDS layer itself resets (e.g., due to module
    reload or machine reboot at the peer)
In case (a) both sides must reconnect and continue the RDS messaging
without any message loss or disruption to the message sequence numbers,
and this is achieved by rds_send_path_reset().

In case (b) we should reset all rds_connection state to the
new incarnation of the peer. Examples of state that needs to
be reset are next expected rx sequence number from, or messages to be
retransmitted to, the new incarnation of the peer.

To achieve this, the RDS handshake probe added as part of
commit 5916e2c155 ("RDS: TCP: Enable multipath RDS for TCP")
is enhanced so that sender and receiver of the RDS ping-probe
will add a generation number as part of the RDS_EXTHDR_GEN_NUM
extension header. Each peer stores local and remote generation
numbers as part of each rds_connection. Changes in generation
number will be detected via incoming handshake probe ping
request or response and will allow the receiver to reset rds_connection
state.

Signed-off-by: Sowmini Varadhan <sowmini.varadhan@oracle.com>
Acked-by: Santosh Shilimkar <santosh.shilimkar@oracle.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2016-11-17 13:35:18 -05:00
..
af_rds.c RDS: TCP: Track peer's connection generation number 2016-11-17 13:35:18 -05:00
bind.c RDS: TCP: Enable multipath RDS for TCP 2016-07-15 11:36:58 -07:00
cong.c RDS: split out connection specific state from rds_connection to rds_conn_path 2016-06-14 23:50:41 -07:00
connection.c RDS: TCP: Track peer's connection generation number 2016-11-17 13:35:18 -05:00
ib_cm.c RDS: TCP: Hooks to set up a single connection path 2016-07-01 16:45:17 -04:00
ib_fmr.c
ib_frmr.c IB/core: Add passing an offset into the SG to ib_map_mr_sg 2016-05-13 13:37:11 -04:00
ib_mr.h RDS: IB: Support Fastreg MR (FRMR) memory registration mode 2016-03-02 14:13:19 -05:00
ib_rdma.c RDS: split out connection specific state from rds_connection to rds_conn_path 2016-06-14 23:50:41 -07:00
ib_recv.c RDS: TCP: make receive path use the rds_conn_path 2016-07-01 16:45:17 -04:00
ib_ring.c
ib_send.c RDS: Rework path specific indirections 2016-07-01 16:45:17 -04:00
ib_stats.c RDS: IB: add mr reused stats 2016-03-02 14:13:19 -05:00
ib_sysctl.c
ib.c IB/core: add support to create a unsafe global rkey to ib_create_pd 2016-09-23 13:47:44 -04:00
ib.h RDS: add __printf format attribute to error reporting functions 2016-08-08 16:16:21 -07:00
info.c
info.h
Kconfig
loop.c RDS: TCP: Hooks to set up a single connection path 2016-07-01 16:45:17 -04:00
loop.h
Makefile rds: debug messages are enabled by default 2016-10-29 15:55:57 -04:00
message.c RDS: TCP: Track peer's connection generation number 2016-11-17 13:35:18 -05:00
page.c RDS: memory allocated must be align to 8 2016-04-07 16:58:27 -04:00
rdma_transport.c RDS: split out connection specific state from rds_connection to rds_conn_path 2016-06-14 23:50:41 -07:00
rdma_transport.h
rdma.c
rds_single_path.h RDS: split out connection specific state from rds_connection to rds_conn_path 2016-06-14 23:50:41 -07:00
rds.h RDS: TCP: Track peer's connection generation number 2016-11-17 13:35:18 -05:00
recv.c RDS: TCP: Track peer's connection generation number 2016-11-17 13:35:18 -05:00
send.c RDS: TCP: Track peer's connection generation number 2016-11-17 13:35:18 -05:00
stats.c
sysctl.c net: rds: fix coding style issues 2016-06-18 21:34:09 -07:00
tcp_connect.c RDS: TCP: Enable multipath RDS for TCP 2016-07-15 11:36:58 -07:00
tcp_listen.c RDS: TCP: start multipath acceptor loop at 0 2016-11-09 12:47:49 -05:00
tcp_recv.c RDS: TCP: make receive path use the rds_conn_path 2016-07-01 16:45:17 -04:00
tcp_send.c RDS: TCP: set RDS_FLAG_RETRANSMITTED in cp_retrans list 2016-11-17 13:35:18 -05:00
tcp_stats.c
tcp.c RDS: TCP: report addr/port info based on TCP socket in rds-info 2016-11-09 12:47:49 -05:00
tcp.h RDS: TCP: avoid bad page reference in rds_tcp_listen_data_ready 2016-07-15 11:36:57 -07:00
threads.c rds: Remove duplicate prefix from rds_conn_path_error use 2016-10-17 11:07:22 -04:00
transport.c net: rds: fix coding style issues 2016-06-18 21:34:09 -07:00