All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH net-next 0/2] rds: tcp: couple of minor bug fixes
@ 2017-03-31 22:56 Sowmini Varadhan
  2017-03-31 22:56 ` [PATCH net-next 1/2] rds: tcp: allow progress of rds_conn_shutdown if the rds_connection is marked ERROR by an intervening FIN Sowmini Varadhan
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Sowmini Varadhan @ 2017-03-31 22:56 UTC (permalink / raw)
  To: netdev; +Cc: davem, santosh.shilimkar, sowmini.varadhan

A couple of minor bugfixes that showed up during testing

Sowmini Varadhan (2):
  rds: tcp: allow progress of rds_conn_shutdown if the rds_connection
    is marked ERROR by an intervening FIN
  rds: tcp: canonical connection order for all paths with index > 0

 net/rds/connection.c |   10 +++++++++-
 net/rds/threads.c    |    2 +-
 2 files changed, 10 insertions(+), 2 deletions(-)

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH net-next 1/2] rds: tcp: allow progress of rds_conn_shutdown if the rds_connection is marked ERROR by an intervening FIN
  2017-03-31 22:56 [PATCH net-next 0/2] rds: tcp: couple of minor bug fixes Sowmini Varadhan
@ 2017-03-31 22:56 ` Sowmini Varadhan
  2017-04-01 18:53   ` santosh.shilimkar
  2017-03-31 22:56 ` [PATCH net-next 2/2] rds: tcp: canonical connection order for all paths with index > 0 Sowmini Varadhan
  2017-04-03  2:41 ` [PATCH net-next 0/2] rds: tcp: couple of minor bug fixes David Miller
  2 siblings, 1 reply; 6+ messages in thread
From: Sowmini Varadhan @ 2017-03-31 22:56 UTC (permalink / raw)
  To: netdev; +Cc: davem, santosh.shilimkar, sowmini.varadhan

rds_conn_shutdown() runs in workq context, and marks the rds_connection
as DISCONNECTING before quiescing Tx/Rx paths. However, after all I/O
has quiesced, we may still find the rds_connection state to be
RDS_CONN_ERROR if an intervening FIN was processed in softirq context.

This is not a fatal error: rds_conn_shutdown() should continue the
shutdown, and there is no need to log noisy messages about this event.

Signed-off-by: Sowmini Varadhan <sowmini.varadhan@oracle.com>
---
 net/rds/connection.c |   10 +++++++++-
 1 files changed, 9 insertions(+), 1 deletions(-)

diff --git a/net/rds/connection.c b/net/rds/connection.c
index 1fa75ab..6a5ebde 100644
--- a/net/rds/connection.c
+++ b/net/rds/connection.c
@@ -333,11 +333,19 @@ void rds_conn_shutdown(struct rds_conn_path *cp)
 		rds_conn_path_reset(cp);
 
 		if (!rds_conn_path_transition(cp, RDS_CONN_DISCONNECTING,
+					      RDS_CONN_DOWN) &&
+		    !rds_conn_path_transition(cp, RDS_CONN_ERROR,
 					      RDS_CONN_DOWN)) {
 			/* This can happen - eg when we're in the middle of tearing
 			 * down the connection, and someone unloads the rds module.
-			 * Quite reproduceable with loopback connections.
+			 * Quite reproducible with loopback connections.
 			 * Mostly harmless.
+			 *
+			 * Note that this also happens with rds-tcp because
+			 * we could have triggered rds_conn_path_drop in irq
+			 * mode from rds_tcp_state change on the receipt of
+			 * a FIN, thus we need to recheck for RDS_CONN_ERROR
+			 * here.
 			 */
 			rds_conn_path_error(cp, "%s: failed to transition "
 					    "to state DOWN, current state "
-- 
1.7.1

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH net-next 2/2] rds: tcp: canonical connection order for all paths with index > 0
  2017-03-31 22:56 [PATCH net-next 0/2] rds: tcp: couple of minor bug fixes Sowmini Varadhan
  2017-03-31 22:56 ` [PATCH net-next 1/2] rds: tcp: allow progress of rds_conn_shutdown if the rds_connection is marked ERROR by an intervening FIN Sowmini Varadhan
@ 2017-03-31 22:56 ` Sowmini Varadhan
  2017-04-01 18:54   ` santosh.shilimkar
  2017-04-03  2:41 ` [PATCH net-next 0/2] rds: tcp: couple of minor bug fixes David Miller
  2 siblings, 1 reply; 6+ messages in thread
From: Sowmini Varadhan @ 2017-03-31 22:56 UTC (permalink / raw)
  To: netdev; +Cc: davem, santosh.shilimkar, sowmini.varadhan

The rds_connect_worker() has a bug in the check that enforces the
canonical connection order described in the comments of
rds_tcp_state_change(). The intention is to make sure that all
the multipath connections are always initiated by the smaller IP
address via rds_start_mprds. To achieve this, rds_connection_worker
should check that cp_index > 0.

Signed-off-by: Sowmini Varadhan <sowmini.varadhan@oracle.com>
---
 net/rds/threads.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/net/rds/threads.c b/net/rds/threads.c
index e36e333..3e447d0 100644
--- a/net/rds/threads.c
+++ b/net/rds/threads.c
@@ -156,7 +156,7 @@ void rds_connect_worker(struct work_struct *work)
 	struct rds_connection *conn = cp->cp_conn;
 	int ret;
 
-	if (cp->cp_index > 1 && cp->cp_conn->c_laddr > cp->cp_conn->c_faddr)
+	if (cp->cp_index > 0 && cp->cp_conn->c_laddr > cp->cp_conn->c_faddr)
 		return;
 	clear_bit(RDS_RECONNECT_PENDING, &cp->cp_flags);
 	ret = rds_conn_path_transition(cp, RDS_CONN_DOWN, RDS_CONN_CONNECTING);
-- 
1.7.1

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH net-next 1/2] rds: tcp: allow progress of rds_conn_shutdown if the rds_connection is marked ERROR by an intervening FIN
  2017-03-31 22:56 ` [PATCH net-next 1/2] rds: tcp: allow progress of rds_conn_shutdown if the rds_connection is marked ERROR by an intervening FIN Sowmini Varadhan
@ 2017-04-01 18:53   ` santosh.shilimkar
  0 siblings, 0 replies; 6+ messages in thread
From: santosh.shilimkar @ 2017-04-01 18:53 UTC (permalink / raw)
  To: Sowmini Varadhan, netdev; +Cc: davem

On 3/31/17 3:56 PM, Sowmini Varadhan wrote:
> rds_conn_shutdown() runs in workq context, and marks the rds_connection
> as DISCONNECTING before quiescing Tx/Rx paths. However, after all I/O
> has quiesced, we may still find the rds_connection state to be
> RDS_CONN_ERROR if an intervening FIN was processed in softirq context.
>
> This is not a fatal error: rds_conn_shutdown() should continue the
> shutdown, and there is no need to log noisy messages about this event.
>
> Signed-off-by: Sowmini Varadhan <sowmini.varadhan@oracle.com>
> ---
Acked-by: Santosh Shilimkar <santosh.shilimkar@oracle.com>

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH net-next 2/2] rds: tcp: canonical connection order for all paths with index > 0
  2017-03-31 22:56 ` [PATCH net-next 2/2] rds: tcp: canonical connection order for all paths with index > 0 Sowmini Varadhan
@ 2017-04-01 18:54   ` santosh.shilimkar
  0 siblings, 0 replies; 6+ messages in thread
From: santosh.shilimkar @ 2017-04-01 18:54 UTC (permalink / raw)
  To: Sowmini Varadhan, netdev; +Cc: davem

On 3/31/17 3:56 PM, Sowmini Varadhan wrote:
> The rds_connect_worker() has a bug in the check that enforces the
> canonical connection order described in the comments of
> rds_tcp_state_change(). The intention is to make sure that all
> the multipath connections are always initiated by the smaller IP
> address via rds_start_mprds. To achieve this, rds_connection_worker
> should check that cp_index > 0.
>
> Signed-off-by: Sowmini Varadhan <sowmini.varadhan@oracle.com>
> ---
Acked-by: Santosh Shilimkar <santosh.shilimkar@oracle.com>

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH net-next 0/2] rds: tcp: couple of minor bug fixes
  2017-03-31 22:56 [PATCH net-next 0/2] rds: tcp: couple of minor bug fixes Sowmini Varadhan
  2017-03-31 22:56 ` [PATCH net-next 1/2] rds: tcp: allow progress of rds_conn_shutdown if the rds_connection is marked ERROR by an intervening FIN Sowmini Varadhan
  2017-03-31 22:56 ` [PATCH net-next 2/2] rds: tcp: canonical connection order for all paths with index > 0 Sowmini Varadhan
@ 2017-04-03  2:41 ` David Miller
  2 siblings, 0 replies; 6+ messages in thread
From: David Miller @ 2017-04-03  2:41 UTC (permalink / raw)
  To: sowmini.varadhan; +Cc: netdev, santosh.shilimkar

From: Sowmini Varadhan <sowmini.varadhan@oracle.com>
Date: Fri, 31 Mar 2017 15:56:29 -0700

> A couple of minor bugfixes that showed up during testing

Series applied, thanks.

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2017-04-03  2:41 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-03-31 22:56 [PATCH net-next 0/2] rds: tcp: couple of minor bug fixes Sowmini Varadhan
2017-03-31 22:56 ` [PATCH net-next 1/2] rds: tcp: allow progress of rds_conn_shutdown if the rds_connection is marked ERROR by an intervening FIN Sowmini Varadhan
2017-04-01 18:53   ` santosh.shilimkar
2017-03-31 22:56 ` [PATCH net-next 2/2] rds: tcp: canonical connection order for all paths with index > 0 Sowmini Varadhan
2017-04-01 18:54   ` santosh.shilimkar
2017-04-03  2:41 ` [PATCH net-next 0/2] rds: tcp: couple of minor bug fixes David Miller

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.