Commit 2057a48d authored by Josef Bacik's avatar Josef Bacik Committed by Trond Myklebust

sunrpc: add a struct rpc_stats arg to rpc_create_args

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: default avatarJosef Bacik <josef@toxicpanda.com>
Signed-off-by: default avatarTrond Myklebust <trond.myklebust@hammerspace.com>
parent edc99a2d
...@@ -139,6 +139,7 @@ struct rpc_create_args { ...@@ -139,6 +139,7 @@ struct rpc_create_args {
const char *servername; const char *servername;
const char *nodename; const char *nodename;
const struct rpc_program *program; const struct rpc_program *program;
struct rpc_stat *stats;
u32 prognumber; /* overrides program->number */ u32 prognumber; /* overrides program->number */
u32 version; u32 version;
rpc_authflavor_t authflavor; rpc_authflavor_t authflavor;
......
...@@ -405,7 +405,7 @@ static struct rpc_clnt * rpc_new_client(const struct rpc_create_args *args, ...@@ -405,7 +405,7 @@ static struct rpc_clnt * rpc_new_client(const struct rpc_create_args *args,
clnt->cl_maxproc = version->nrprocs; clnt->cl_maxproc = version->nrprocs;
clnt->cl_prog = args->prognumber ? : program->number; clnt->cl_prog = args->prognumber ? : program->number;
clnt->cl_vers = version->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); clnt->cl_metrics = rpc_alloc_iostats(clnt);
rpc_init_pipe_dir_head(&clnt->cl_pipedir_objects); rpc_init_pipe_dir_head(&clnt->cl_pipedir_objects);
err = -ENOMEM; err = -ENOMEM;
...@@ -691,6 +691,7 @@ struct rpc_clnt *rpc_clone_client(struct rpc_clnt *clnt) ...@@ -691,6 +691,7 @@ struct rpc_clnt *rpc_clone_client(struct rpc_clnt *clnt)
.version = clnt->cl_vers, .version = clnt->cl_vers,
.authflavor = clnt->cl_auth->au_flavor, .authflavor = clnt->cl_auth->au_flavor,
.cred = clnt->cl_cred, .cred = clnt->cl_cred,
.stats = clnt->cl_stats,
}; };
return __rpc_clone_client(&args, clnt); return __rpc_clone_client(&args, clnt);
} }
...@@ -713,6 +714,7 @@ rpc_clone_client_set_auth(struct rpc_clnt *clnt, rpc_authflavor_t flavor) ...@@ -713,6 +714,7 @@ rpc_clone_client_set_auth(struct rpc_clnt *clnt, rpc_authflavor_t flavor)
.version = clnt->cl_vers, .version = clnt->cl_vers,
.authflavor = flavor, .authflavor = flavor,
.cred = clnt->cl_cred, .cred = clnt->cl_cred,
.stats = clnt->cl_stats,
}; };
return __rpc_clone_client(&args, clnt); return __rpc_clone_client(&args, clnt);
} }
...@@ -1068,6 +1070,7 @@ struct rpc_clnt *rpc_bind_new_program(struct rpc_clnt *old, ...@@ -1068,6 +1070,7 @@ struct rpc_clnt *rpc_bind_new_program(struct rpc_clnt *old,
.version = vers, .version = vers,
.authflavor = old->cl_auth->au_flavor, .authflavor = old->cl_auth->au_flavor,
.cred = old->cl_cred, .cred = old->cl_cred,
.stats = old->cl_stats,
}; };
struct rpc_clnt *clnt; struct rpc_clnt *clnt;
int err; int err;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment