|
@@ -279,6 +279,14 @@ void rpc_clients_notifier_unregister(void)
|
|
|
return rpc_pipefs_notifier_unregister(&rpc_clients_block);
|
|
|
}
|
|
|
|
|
|
+static void rpc_clnt_set_nodename(struct rpc_clnt *clnt, const char *nodename)
|
|
|
+{
|
|
|
+ clnt->cl_nodelen = strlen(nodename);
|
|
|
+ if (clnt->cl_nodelen > UNX_MAXNODENAME)
|
|
|
+ clnt->cl_nodelen = UNX_MAXNODENAME;
|
|
|
+ memcpy(clnt->cl_nodename, nodename, clnt->cl_nodelen);
|
|
|
+}
|
|
|
+
|
|
|
static struct rpc_clnt * rpc_new_client(const struct rpc_create_args *args, struct rpc_xprt *xprt)
|
|
|
{
|
|
|
const struct rpc_program *program = args->program;
|
|
@@ -359,10 +367,7 @@ static struct rpc_clnt * rpc_new_client(const struct rpc_create_args *args, stru
|
|
|
}
|
|
|
|
|
|
/* save the nodename */
|
|
|
- clnt->cl_nodelen = strlen(init_utsname()->nodename);
|
|
|
- if (clnt->cl_nodelen > UNX_MAXNODENAME)
|
|
|
- clnt->cl_nodelen = UNX_MAXNODENAME;
|
|
|
- memcpy(clnt->cl_nodename, init_utsname()->nodename, clnt->cl_nodelen);
|
|
|
+ rpc_clnt_set_nodename(clnt, utsname()->nodename);
|
|
|
rpc_register_client(clnt);
|
|
|
return clnt;
|
|
|
|
|
@@ -521,6 +526,7 @@ rpc_clone_client(struct rpc_clnt *clnt)
|
|
|
err = rpc_setup_pipedir(new, clnt->cl_program->pipe_dir_name);
|
|
|
if (err != 0)
|
|
|
goto out_no_path;
|
|
|
+ rpc_clnt_set_nodename(new, utsname()->nodename);
|
|
|
if (new->cl_auth)
|
|
|
atomic_inc(&new->cl_auth->au_count);
|
|
|
atomic_inc(&clnt->cl_count);
|