linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Santosh Shilimkar <santosh.shilimkar@oracle.com>
To: netdev@vger.kernel.org, davem@davemloft.net
Cc: linux-kernel@vger.kernel.org, santosh.shilimkar@oracle.com
Subject: [net-next][PATCH v3 07/17] RDS: RDMA: return appropriate error on rdma map failures
Date: Mon,  2 Jan 2017 14:45:42 -0800	[thread overview]
Message-ID: <1483397152-8307-8-git-send-email-santosh.shilimkar@oracle.com> (raw)
In-Reply-To: <1483397152-8307-1-git-send-email-santosh.shilimkar@oracle.com>

The first message to a remote node should prompt a new
connection even if it is RDMA operation. For RDMA operation
the MR mapping can fail because connections is not yet up.

Since the connection establishment is asynchronous,
we make sure the map failure because of unavailable
connection reach to the user by appropriate error code.
Before returning to the user, lets trigger the connection
so that its ready for the next retry.

Signed-off-by: Santosh Shilimkar <santosh.shilimkar@oracle.com>
---
 net/rds/send.c | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/net/rds/send.c b/net/rds/send.c
index bb13c56..0a6f38b 100644
--- a/net/rds/send.c
+++ b/net/rds/send.c
@@ -945,6 +945,11 @@ static int rds_cmsg_send(struct rds_sock *rs, struct rds_message *rm,
 			ret = rds_cmsg_rdma_map(rs, rm, cmsg);
 			if (!ret)
 				*allocated_mr = 1;
+			else if (ret == -ENODEV)
+				/* Accommodate the get_mr() case which can fail
+				 * if connection isn't established yet.
+				 */
+				ret = -EAGAIN;
 			break;
 		case RDS_CMSG_ATOMIC_CSWP:
 		case RDS_CMSG_ATOMIC_FADD:
@@ -1082,8 +1087,12 @@ int rds_sendmsg(struct socket *sock, struct msghdr *msg, size_t payload_len)
 
 	/* Parse any control messages the user may have included. */
 	ret = rds_cmsg_send(rs, rm, msg, &allocated_mr);
-	if (ret)
+	if (ret) {
+		/* Trigger connection so that its ready for the next retry */
+		if (ret ==  -EAGAIN)
+			rds_conn_connect_if_down(conn);
 		goto out;
+	}
 
 	if (rm->rdma.op_active && !conn->c_trans->xmit_rdma) {
 		printk_ratelimited(KERN_NOTICE "rdma_op %p conn xmit_rdma %p\n",
-- 
1.9.1

  parent reply	other threads:[~2017-01-02 22:49 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-01-02 22:45 [net-next][PATCH v3 00/17] net: RDS updates Santosh Shilimkar
2017-01-02 22:45 ` [net-next][PATCH v3 01/17] RDS: log the address on bind failure Santosh Shilimkar
2017-01-02 22:45 ` [net-next][PATCH v3 02/17] RDS: mark few internal functions static to make sparse build happy Santosh Shilimkar
2017-01-02 22:45 ` [net-next][PATCH v3 03/17] RDS: IB: include faddr in connection log Santosh Shilimkar
2017-01-02 22:45 ` [net-next][PATCH v3 04/17] RDS: IB: make the transport retry count smallest Santosh Shilimkar
2017-01-02 22:45 ` [net-next][PATCH v3 05/17] RDS: RDMA: fix the ib_map_mr_sg_zbva() argument Santosh Shilimkar
2017-01-02 22:45 ` [net-next][PATCH v3 06/17] RDS: RDMA: start rdma listening after init Santosh Shilimkar
2017-01-02 22:45 ` Santosh Shilimkar [this message]
2017-01-02 22:45 ` [net-next][PATCH v3 08/17] RDS: IB: split the mr registration and invalidation path Santosh Shilimkar
2017-01-02 22:45 ` [net-next][PATCH v3 09/17] RDS: RDMA: silence the use_once mr log flood Santosh Shilimkar
2017-01-02 22:45 ` [net-next][PATCH v3 10/17] RDS: IB: track and log active side endpoint in connection Santosh Shilimkar
2017-01-02 22:45 ` [net-next][PATCH v3 11/17] RDS: IB: add few useful cache stasts Santosh Shilimkar
2017-01-02 22:45 ` [net-next][PATCH v3 12/17] RDS: IB: Add vector spreading for cqs Santosh Shilimkar
2017-01-02 22:45 ` [net-next][PATCH v3 13/17] RDS: RDMA: Fix the composite message user notification Santosh Shilimkar
2017-01-02 22:45 ` [net-next][PATCH v3 14/17] RDS: IB: fix panic due to handlers running post teardown Santosh Shilimkar
2017-01-02 22:45 ` [net-next][PATCH v3 15/17] RDS: add stat for socket recv memory usage Santosh Shilimkar
2017-01-02 22:45 ` [net-next][PATCH v3 16/17] RDS: make message size limit compliant with spec Santosh Shilimkar
2017-01-02 22:45 ` [net-next][PATCH v3 17/17] RDS: add receive message trace used by application Santosh Shilimkar
2017-01-03 14:46 ` [net-next][PATCH v3 00/17] net: RDS updates David Miller

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1483397152-8307-8-git-send-email-santosh.shilimkar@oracle.com \
    --to=santosh.shilimkar@oracle.com \
    --cc=davem@davemloft.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).