netdev.vger.kernel.org archive mirror
 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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).