+++ /dev/null
-From fa22ff433c0a5c58aef853785a54436a6f847a95 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Thu, 15 Feb 2024 14:57:30 -0500
-Subject: sunrpc: add a struct rpc_stats arg to rpc_create_args
-
-From: Josef Bacik <josef@toxicpanda.com>
-
-[ Upstream commit 2057a48d0dd00c6a2a94ded7df2bf1d3f2a4a0da ]
-
-We want to be able to have our rpc stats handled in a per network
-namespace manner, so add an option to rpc_create_args to specify a
-different rpc_stats struct instead of using the one on the rpc_program.
-
-Signed-off-by: Josef Bacik <josef@toxicpanda.com>
-Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
-Stable-dep-of: 24457f1be29f ("nfs: Handle error of rpc_proc_register() in nfs_net_init().")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- include/linux/sunrpc/clnt.h | 1 +
- net/sunrpc/clnt.c | 5 ++++-
- 2 files changed, 5 insertions(+), 1 deletion(-)
-
-diff --git a/include/linux/sunrpc/clnt.h b/include/linux/sunrpc/clnt.h
-index 41ed614e69209..187e9f06cf64b 100644
---- a/include/linux/sunrpc/clnt.h
-+++ b/include/linux/sunrpc/clnt.h
-@@ -126,6 +126,7 @@ struct rpc_create_args {
- const char *servername;
- const char *nodename;
- const struct rpc_program *program;
-+ struct rpc_stat *stats;
- u32 prognumber; /* overrides program->number */
- u32 version;
- rpc_authflavor_t authflavor;
-diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c
-index 360a3bcd91fe1..a5ce9b937c42e 100644
---- a/net/sunrpc/clnt.c
-+++ b/net/sunrpc/clnt.c
-@@ -395,7 +395,7 @@ static struct rpc_clnt * rpc_new_client(const struct rpc_create_args *args,
- clnt->cl_maxproc = version->nrprocs;
- clnt->cl_prog = args->prognumber ? : program->number;
- clnt->cl_vers = version->number;
-- clnt->cl_stats = program->stats;
-+ clnt->cl_stats = args->stats ? : program->stats;
- clnt->cl_metrics = rpc_alloc_iostats(clnt);
- rpc_init_pipe_dir_head(&clnt->cl_pipedir_objects);
- err = -ENOMEM;
-@@ -665,6 +665,7 @@ struct rpc_clnt *rpc_clone_client(struct rpc_clnt *clnt)
- .version = clnt->cl_vers,
- .authflavor = clnt->cl_auth->au_flavor,
- .cred = clnt->cl_cred,
-+ .stats = clnt->cl_stats,
- };
- return __rpc_clone_client(&args, clnt);
- }
-@@ -687,6 +688,7 @@ rpc_clone_client_set_auth(struct rpc_clnt *clnt, rpc_authflavor_t flavor)
- .version = clnt->cl_vers,
- .authflavor = flavor,
- .cred = clnt->cl_cred,
-+ .stats = clnt->cl_stats,
- };
- return __rpc_clone_client(&args, clnt);
- }
-@@ -967,6 +969,7 @@ struct rpc_clnt *rpc_bind_new_program(struct rpc_clnt *old,
- .version = vers,
- .authflavor = old->cl_auth->au_flavor,
- .cred = old->cl_cred,
-+ .stats = old->cl_stats,
- };
- struct rpc_clnt *clnt;
- int err;
---
-2.43.0
-