From: Chuck Lever <chuck.lever@oracle.com>
To: linux-rdma@vger.kernel.org, linux-nfs@vger.kernel.org
Subject: [PATCH v4 01/16] xprtrdma: Make xprt_setup_rdma() agnostic to family of server address
Date: Mon, 03 Aug 2015 13:02:41 -0400 [thread overview]
Message-ID: <20150803170241.9115.82484.stgit@manet.1015granger.net> (raw)
In-Reply-To: <20150803165807.9115.23842.stgit@manet.1015granger.net>
In particular, recognize when an IPv6 connection is bound.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Tested-by: Devesh Sharma <devesh.sharma@avagotech.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
---
net/sunrpc/xprtrdma/transport.c | 28 +++++++++++-----------------
1 file changed, 11 insertions(+), 17 deletions(-)
diff --git a/net/sunrpc/xprtrdma/transport.c b/net/sunrpc/xprtrdma/transport.c
index 680f888..d737300 100644
--- a/net/sunrpc/xprtrdma/transport.c
+++ b/net/sunrpc/xprtrdma/transport.c
@@ -175,10 +175,8 @@ xprt_rdma_format_addresses6(struct rpc_xprt *xprt, struct sockaddr *sap)
}
static void
-xprt_rdma_format_addresses(struct rpc_xprt *xprt)
+xprt_rdma_format_addresses(struct rpc_xprt *xprt, struct sockaddr *sap)
{
- struct sockaddr *sap = (struct sockaddr *)
- &rpcx_to_rdmad(xprt).addr;
char buf[128];
switch (sap->sa_family) {
@@ -302,7 +300,7 @@ xprt_setup_rdma(struct xprt_create *args)
struct rpc_xprt *xprt;
struct rpcrdma_xprt *new_xprt;
struct rpcrdma_ep *new_ep;
- struct sockaddr_in *sin;
+ struct sockaddr *sap;
int rc;
if (args->addrlen > sizeof(xprt->addr)) {
@@ -333,26 +331,20 @@ xprt_setup_rdma(struct xprt_create *args)
* Set up RDMA-specific connect data.
*/
- /* Put server RDMA address in local cdata */
- memcpy(&cdata.addr, args->dstaddr, args->addrlen);
+ sap = (struct sockaddr *)&cdata.addr;
+ memcpy(sap, args->dstaddr, args->addrlen);
/* Ensure xprt->addr holds valid server TCP (not RDMA)
* address, for any side protocols which peek at it */
xprt->prot = IPPROTO_TCP;
xprt->addrlen = args->addrlen;
- memcpy(&xprt->addr, &cdata.addr, xprt->addrlen);
+ memcpy(&xprt->addr, sap, xprt->addrlen);
- sin = (struct sockaddr_in *)&cdata.addr;
- if (ntohs(sin->sin_port) != 0)
+ if (rpc_get_port(sap))
xprt_set_bound(xprt);
- dprintk("RPC: %s: %pI4:%u\n",
- __func__, &sin->sin_addr.s_addr, ntohs(sin->sin_port));
-
- /* Set max requests */
cdata.max_requests = xprt->max_reqs;
- /* Set some length limits */
cdata.rsize = RPCRDMA_MAX_SEGS * PAGE_SIZE; /* RDMA write max */
cdata.wsize = RPCRDMA_MAX_SEGS * PAGE_SIZE; /* RDMA read max */
@@ -375,8 +367,7 @@ xprt_setup_rdma(struct xprt_create *args)
new_xprt = rpcx_to_rdmax(xprt);
- rc = rpcrdma_ia_open(new_xprt, (struct sockaddr *) &cdata.addr,
- xprt_rdma_memreg_strategy);
+ rc = rpcrdma_ia_open(new_xprt, sap, xprt_rdma_memreg_strategy);
if (rc)
goto out1;
@@ -409,7 +400,7 @@ xprt_setup_rdma(struct xprt_create *args)
INIT_DELAYED_WORK(&new_xprt->rx_connect_worker,
xprt_rdma_connect_worker);
- xprt_rdma_format_addresses(xprt);
+ xprt_rdma_format_addresses(xprt, sap);
xprt->max_payload = new_xprt->rx_ia.ri_ops->ro_maxpages(new_xprt);
if (xprt->max_payload == 0)
goto out4;
@@ -420,6 +411,9 @@ xprt_setup_rdma(struct xprt_create *args)
if (!try_module_get(THIS_MODULE))
goto out4;
+ dprintk("RPC: %s: %s:%s\n", __func__,
+ xprt->address_strings[RPC_DISPLAY_ADDR],
+ xprt->address_strings[RPC_DISPLAY_PORT]);
return xprt;
out4:
next prev parent reply other threads:[~2015-08-03 17:02 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-08-03 17:02 [PATCH v4 00/16] NFS/RDMA client side for Linux 4.3 Chuck Lever
2015-08-03 17:02 ` Chuck Lever [this message]
2015-08-03 17:02 ` [PATCH v4 02/16] xprtrdma: Raise maximum payload size to one megabyte Chuck Lever
2015-08-03 17:02 ` [PATCH v4 03/16] xprtrdma: Increase default credit limit Chuck Lever
2015-08-03 17:03 ` [PATCH v4 04/16] xprtrdma: Don't fall back to PHYSICAL memory registration Chuck Lever
2015-08-03 17:03 ` [PATCH v4 05/16] xprtrdma: Remove last ib_reg_phys_mr() call site Chuck Lever
2015-08-03 17:03 ` [PATCH v4 06/16] xprtrdma: Clean up rpcrdma_ia_open() Chuck Lever
2015-08-03 17:03 ` [PATCH v4 07/16] xprtrdma: Remove logic that constructs RDMA_MSGP type calls Chuck Lever
2015-08-03 17:03 ` [PATCH v4 08/16] xprtrdma: Account for RPC/RDMA header size when deciding to inline Chuck Lever
2015-08-03 17:03 ` [PATCH v4 09/16] xprtrdma: Always provide a write list when sending NFS READ Chuck Lever
2015-08-03 17:04 ` [PATCH v4 10/16] xprtrdma: Don't provide a reply chunk when expecting a short reply Chuck Lever
2015-08-03 17:04 ` [PATCH v4 11/16] xprtrdma: Fix XDR tail buffer marshalling Chuck Lever
2015-08-03 17:04 ` [PATCH v4 12/16] xprtrdma: Fix large NFS SYMLINK calls Chuck Lever
2015-08-03 17:04 ` [PATCH v4 13/16] xprtrdma: Clean up xprt_rdma_print_stats() Chuck Lever
2015-08-03 17:04 ` [PATCH v4 14/16] xprtrdma: Count RDMA_NOMSG type calls Chuck Lever
2015-08-03 17:04 ` [PATCH v4 15/16] core: Remove the ib_reg_phys_mr() and ib_rereg_phys_mr() verbs Chuck Lever
2015-08-03 17:05 ` [PATCH v4 16/16] xprtrdma: take HCA driver refcount at client Chuck Lever
2015-08-03 17:07 ` Chuck Lever
2015-08-06 14:28 ` [PATCH v4 00/16] NFS/RDMA client side for Linux 4.3 Anna Schumaker
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=20150803170241.9115.82484.stgit@manet.1015granger.net \
--to=chuck.lever@oracle.com \
--cc=linux-nfs@vger.kernel.org \
--cc=linux-rdma@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