All of lore.kernel.org
 help / color / mirror / Atom feed
From: Olga Kornievskaia <olga.kornievskaia@gmail.com>
To: trond.myklebust@hammerspace.com, anna.schumaker@netapp.com
Cc: linux-nfs@vger.kernel.org
Subject: [PATCH v1 09/12] SUNRPC restructure rpc_clnt_setup_test_and_add_xprt
Date: Mon, 20 Jun 2022 11:24:04 -0400	[thread overview]
Message-ID: <20220620152407.63127-10-olga.kornievskaia@gmail.com> (raw)
In-Reply-To: <20220620152407.63127-1-olga.kornievskaia@gmail.com>

From: Olga Kornievskaia <kolga@netapp.com>

In preparation for code re-use, pull out the part of the
rpc_clnt_setup_test_and_add_xprt() portion that sends a NULL rpc
and then calls a session trunking function into a helper function.

Re-organize the end of the function for code re-use.

Signed-off-by: Olga Kornievskaia <kolga@netapp.com>
---
 net/sunrpc/clnt.c | 53 ++++++++++++++++++++++++++++-------------------
 1 file changed, 32 insertions(+), 21 deletions(-)

diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c
index 2b2515c121fa..6b04b29bf842 100644
--- a/net/sunrpc/clnt.c
+++ b/net/sunrpc/clnt.c
@@ -2887,6 +2887,31 @@ int rpc_clnt_test_and_add_xprt(struct rpc_clnt *clnt,
 }
 EXPORT_SYMBOL_GPL(rpc_clnt_test_and_add_xprt);
 
+static int rpc_clnt_add_xprt_helper(struct rpc_clnt *clnt,
+				    struct rpc_xprt *xprt,
+				    void *data)
+{
+	struct rpc_task *task;
+	struct rpc_add_xprt_test *xtest = (struct rpc_add_xprt_test *)data;
+	int status = -EADDRINUSE;
+
+	/* Test the connection */
+	task = rpc_call_null_helper(clnt, xprt, NULL, 0, NULL, NULL);
+	if (IS_ERR(task))
+		return PTR_ERR(task);
+
+	status = task->tk_status;
+	rpc_put_task(task);
+
+	if (status < 0)
+		return status;
+
+	/* rpc_xprt_switch and rpc_xprt are deferrenced by add_xprt_test() */
+	xtest->add_xprt_test(clnt, xprt, xtest->data);
+
+	return 0;
+}
+
 /**
  * rpc_clnt_setup_test_and_add_xprt()
  *
@@ -2910,8 +2935,6 @@ int rpc_clnt_setup_test_and_add_xprt(struct rpc_clnt *clnt,
 				     struct rpc_xprt *xprt,
 				     void *data)
 {
-	struct rpc_task *task;
-	struct rpc_add_xprt_test *xtest = (struct rpc_add_xprt_test *)data;
 	int status = -EADDRINUSE;
 
 	xprt = xprt_get(xprt);
@@ -2920,31 +2943,19 @@ int rpc_clnt_setup_test_and_add_xprt(struct rpc_clnt *clnt,
 	if (rpc_xprt_switch_has_addr(xps, (struct sockaddr *)&xprt->addr))
 		goto out_err;
 
-	/* Test the connection */
-	task = rpc_call_null_helper(clnt, xprt, NULL, 0, NULL, NULL);
-	if (IS_ERR(task)) {
-		status = PTR_ERR(task);
-		goto out_err;
-	}
-	status = task->tk_status;
-	rpc_put_task(task);
-
+	status = rpc_clnt_add_xprt_helper(clnt, xprt, data);
 	if (status < 0)
 		goto out_err;
 
-	/* rpc_xprt_switch and rpc_xprt are deferrenced by add_xprt_test() */
-	xtest->add_xprt_test(clnt, xprt, xtest->data);
-
-	xprt_put(xprt);
-	xprt_switch_put(xps);
-
-	/* so that rpc_clnt_add_xprt does not call rpc_xprt_switch_add_xprt */
-	return 1;
+	status = 1;
 out_err:
 	xprt_put(xprt);
 	xprt_switch_put(xps);
-	pr_info("RPC:   rpc_clnt_test_xprt failed: %d addr %s not added\n",
-		status, xprt->address_strings[RPC_DISPLAY_ADDR]);
+	if (status < 0)
+		pr_info("RPC:   rpc_clnt_test_xprt failed: %d addr %s not "
+			"added\n", status,
+			xprt->address_strings[RPC_DISPLAY_ADDR]);
+	/* so that rpc_clnt_add_xprt does not call rpc_xprt_switch_add_xprt */
 	return status;
 }
 EXPORT_SYMBOL_GPL(rpc_clnt_setup_test_and_add_xprt);
-- 
2.27.0


  parent reply	other threads:[~2022-06-20 15:26 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-06-20 15:23 [PATCH v1 00/12] Handling session trunking group membership Olga Kornievskaia
2022-06-20 15:23 ` [PATCH v1 01/12] SUNRPC expose functions for offline remote xprt functionality Olga Kornievskaia
2022-07-12 15:12   ` Trond Myklebust
2022-07-12 15:57     ` Olga Kornievskaia
2022-06-20 15:23 ` [PATCH v1 02/12] SUNRPC add function to offline remove trunkable transports Olga Kornievskaia
2022-07-12 15:24   ` Trond Myklebust
2022-07-12 16:07     ` Olga Kornievskaia
2022-06-20 15:23 ` [PATCH v1 03/12] NFSv4.1 offline trunkable transports on DESTROY_SESSION Olga Kornievskaia
2022-06-20 15:23 ` [PATCH v1 04/12] SUNRPC create an iterator to list only OFFLINE xprts Olga Kornievskaia
2022-06-20 15:24 ` [PATCH v1 05/12] SUNRPC parameterize rpc_clnt_iterate_for_each_xprt with iterator init function Olga Kornievskaia
2022-07-12 15:43   ` Trond Myklebust
2022-06-20 15:24 ` [PATCH v1 06/12] SUNRPC enable back offline transports in trunking discovery Olga Kornievskaia
2022-06-20 15:24 ` [PATCH v1 07/12] SUNRPC create an rpc function that allows xprt removal from rpc_clnt Olga Kornievskaia
2022-06-20 15:24 ` [PATCH v1 08/12] NFSv4.1 remove xprt from xprt_switch if session trunking test fails Olga Kornievskaia
2022-06-20 15:24 ` Olga Kornievskaia [this message]
2022-06-20 15:24 ` [PATCH v1 10/12] SUNRPC export xprt_iter_rewind function Olga Kornievskaia
2022-06-20 15:24 ` [PATCH v1 11/12] SUNRPC create a function that probes only offline transports Olga Kornievskaia
2022-07-12 16:00   ` Trond Myklebust
2022-06-20 15:24 ` [PATCH v1 12/12] NFSv4.1 probe offline transports for trunking on session creation Olga Kornievskaia

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=20220620152407.63127-10-olga.kornievskaia@gmail.com \
    --to=olga.kornievskaia@gmail.com \
    --cc=anna.schumaker@netapp.com \
    --cc=linux-nfs@vger.kernel.org \
    --cc=trond.myklebust@hammerspace.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.