mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: alexander.levin@verizon.com
To: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"stable@vger.kernel.org" <stable@vger.kernel.org>
Cc: Santosh Shilimkar <santosh.shilimkar@oracle.com>,
	alexander.levin@verizon.com
Subject: [PATCH AUTOSEL for 3.18 02/16] RDS: RDMA: return appropriate error on rdma map failures
Date: Wed, 15 Nov 2017 02:46:13 +0000	[thread overview]
Message-ID: <20171115024607.6064-2-alexander.levin@verizon.com> (raw)
In-Reply-To: <20171115024607.6064-1-alexander.levin@verizon.com>

From: Santosh Shilimkar <santosh.shilimkar@oracle.com>

[ Upstream commit 584a8279a44a800dea5a5c1e9d53a002e03016b4 ]

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>
Signed-off-by: Sasha Levin <alexander.levin@verizon.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 45b800c3cc83..e827b41c9da2 100644
--- a/net/rds/send.c
+++ b/net/rds/send.c
@@ -903,6 +903,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:
@@ -1011,8 +1016,12 @@ int rds_sendmsg(struct kiocb *iocb, struct socket *sock, struct msghdr *msg,
 
 	/* 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",
-- 
2.11.0

  parent reply	other threads:[~2017-11-15  2:54 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-11-15  2:46 [PATCH AUTOSEL for 3.18 01/16] ACPICA: Resources: Not a valid resource if buffer length too long alexander.levin
2017-11-15  2:46 ` [PATCH AUTOSEL for 3.18 03/16] PCI: Apply _HPX settings only to relevant devices alexander.levin
2017-11-15  2:46 ` alexander.levin [this message]
2017-11-15  2:46 ` [PATCH AUTOSEL for 3.18 05/16] net: 3com: typhoon: typhoon_init_one: fix incorrect return values alexander.levin
2017-11-15  2:46 ` [PATCH AUTOSEL for 3.18 06/16] drm/armada: Fix compile fail alexander.levin
2017-11-15  2:46 ` [PATCH AUTOSEL for 3.18 04/16] net: 3com: typhoon: typhoon_init_one: make return values more specific alexander.levin
2017-11-15  2:46 ` [PATCH AUTOSEL for 3.18 07/16] ALSA: hda - Apply ALC269_FIXUP_NO_SHUTUP on HDA_FIXUP_ACT_PROBE alexander.levin
2017-11-15  2:46 ` [PATCH AUTOSEL for 3.18 10/16] staging: iio: cdc: fix improper return value alexander.levin
2017-11-15  2:46 ` [PATCH AUTOSEL for 3.18 11/16] netfilter: nft_queue: use raw_smp_processor_id() alexander.levin
2017-11-15  2:46 ` [PATCH AUTOSEL for 3.18 09/16] mac80211: Suppress NEW_PEER_CANDIDATE event if no room alexander.levin
2017-11-15  2:46 ` [PATCH AUTOSEL for 3.18 12/16] netfilter: nf_tables: fix oob access alexander.levin
2017-11-15  2:46 ` [PATCH AUTOSEL for 3.18 08/16] mac80211: Remove invalid flag operations in mesh TSF synchronization alexander.levin
2017-11-15  2:46 ` [PATCH AUTOSEL for 3.18 15/16] s390/kbuild: enable modversions for symbols exported from asm alexander.levin
2017-11-15  2:46 ` [PATCH AUTOSEL for 3.18 14/16] ASoC: wm_adsp: Don't overrun firmware file buffer when reading region data alexander.levin
2017-11-15  2:46 ` [PATCH AUTOSEL for 3.18 13/16] btrfs: return the actual error value from from btrfs_uuid_tree_iterate alexander.levin
2017-11-15  2:46 ` [PATCH AUTOSEL for 3.18 16/16] xen: xenbus driver must not accept invalid transaction ids alexander.levin

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=20171115024607.6064-2-alexander.levin@verizon.com \
    --to=alexander.levin@verizon.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=santosh.shilimkar@oracle.com \
    --cc=stable@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

all inboxes | Powered by JetHome®