aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nfs/pnfs_nfs.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/nfs/pnfs_nfs.c')
-rw-r--r--fs/nfs/pnfs_nfs.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/fs/nfs/pnfs_nfs.c b/fs/nfs/pnfs_nfs.c
index 81ac6480f9e7..4aaed890048f 100644
--- a/fs/nfs/pnfs_nfs.c
+++ b/fs/nfs/pnfs_nfs.c
@@ -606,12 +606,22 @@ static int _nfs4_pnfs_v3_ds_connect(struct nfs_server *mds_srv,
606 dprintk("%s: DS %s: trying address %s\n", 606 dprintk("%s: DS %s: trying address %s\n",
607 __func__, ds->ds_remotestr, da->da_remotestr); 607 __func__, ds->ds_remotestr, da->da_remotestr);
608 608
609 clp = get_v3_ds_connect(mds_srv->nfs_client, 609 if (!IS_ERR(clp)) {
610 struct xprt_create xprt_args = {
611 .ident = XPRT_TRANSPORT_TCP,
612 .net = clp->cl_net,
613 .dstaddr = (struct sockaddr *)&da->da_addr,
614 .addrlen = da->da_addrlen,
615 .servername = clp->cl_hostname,
616 };
617 /* Add this address as an alias */
618 rpc_clnt_add_xprt(clp->cl_rpcclient, &xprt_args,
619 rpc_clnt_test_and_add_xprt, NULL);
620 } else
621 clp = get_v3_ds_connect(mds_srv->nfs_client,
610 (struct sockaddr *)&da->da_addr, 622 (struct sockaddr *)&da->da_addr,
611 da->da_addrlen, IPPROTO_TCP, 623 da->da_addrlen, IPPROTO_TCP,
612 timeo, retrans, au_flavor); 624 timeo, retrans, au_flavor);
613 if (!IS_ERR(clp))
614 break;
615 } 625 }
616 626
617 if (IS_ERR(clp)) { 627 if (IS_ERR(clp)) {