From: Andy Adamson <andros@xxxxxxxxxx> Signed-off-by: Andy Adamson <andros@xxxxxxxxxx> --- fs/nfs/super.c | 26 ++++++++++++++++++++++++++ net/sunrpc/xprtmultipath.c | 1 + 2 files changed, 27 insertions(+) diff --git a/fs/nfs/super.c b/fs/nfs/super.c index f126828..8d96025 100644 --- a/fs/nfs/super.c +++ b/fs/nfs/super.c @@ -603,8 +603,34 @@ static void nfs_show_nfsv4_options(struct seq_file *m, struct nfs_server *nfss, int showdefaults) { struct nfs_client *clp = nfss->nfs_client; + struct rpc_clnt *clnt = clp->cl_rpcclient; + struct rpc_xprt_switch *xps; + struct rpc_xprt *pos; + unsigned int nxprts; seq_printf(m, ",clientaddr=%s", clp->cl_ipaddr); + rcu_read_lock(); + xps = xprt_switch_get(rcu_dereference(clnt->cl_xpi.xpi_xpswitch)); + pos = xprt_iter_xprt(&clnt->cl_xpi); + if (xps == NULL || pos == NULL) { + rcu_read_unlock(); + return; + } + nxprts = xps->xps_nxprts; + list_for_each_entry_rcu(pos, &xps->xps_xprt_list, xprt_switch) { + if (nxprts == 0) + break; + if (pos->address_strings[RPC_DISPLAY_ADDR] == NULL) + break; + /* Do not display mount xprt as a multiaddr */ + if (pos == rcu_access_pointer(clp->cl_rpcclient->cl_xprt)) + continue; + seq_printf(m, ",multiaddr=%s", + pos->address_strings[RPC_DISPLAY_ADDR]); + nxprts--; + } + rcu_read_unlock(); + xprt_switch_put(xps); } #else static void nfs_show_nfsv4_options(struct seq_file *m, struct nfs_server *nfss, diff --git a/net/sunrpc/xprtmultipath.c b/net/sunrpc/xprtmultipath.c index 360f64c..708c22a 100644 --- a/net/sunrpc/xprtmultipath.c +++ b/net/sunrpc/xprtmultipath.c @@ -403,6 +403,7 @@ struct rpc_xprt *xprt_iter_xprt(struct rpc_xprt_iter *xpi) WARN_ON_ONCE(!rcu_read_lock_held()); return xprt_iter_ops(xpi)->xpi_xprt(xpi); } +EXPORT_SYMBOL_GPL(xprt_iter_xprt); static struct rpc_xprt *xprt_iter_get_helper(struct rpc_xprt_iter *xpi, -- 1.8.3.1 -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html