mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-23 01:10:04 +00:00
SUNRPC: Replace rpc_client->cl_dentry and cl_mnt, with a cl_path
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
This commit is contained in:
parent
7d59d1e865
commit
7d217caca5
4 changed files with 18 additions and 18 deletions
|
@ -119,8 +119,8 @@ nfs_idmap_new(struct nfs_client *clp)
|
||||||
if (idmap == NULL)
|
if (idmap == NULL)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
idmap->idmap_dentry = rpc_mkpipe(clp->cl_rpcclient->cl_dentry, "idmap",
|
idmap->idmap_dentry = rpc_mkpipe(clp->cl_rpcclient->cl_path.dentry,
|
||||||
idmap, &idmap_upcall_ops, 0);
|
"idmap", idmap, &idmap_upcall_ops, 0);
|
||||||
if (IS_ERR(idmap->idmap_dentry)) {
|
if (IS_ERR(idmap->idmap_dentry)) {
|
||||||
error = PTR_ERR(idmap->idmap_dentry);
|
error = PTR_ERR(idmap->idmap_dentry);
|
||||||
kfree(idmap);
|
kfree(idmap);
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
#include <linux/sunrpc/xdr.h>
|
#include <linux/sunrpc/xdr.h>
|
||||||
#include <linux/sunrpc/timer.h>
|
#include <linux/sunrpc/timer.h>
|
||||||
#include <asm/signal.h>
|
#include <asm/signal.h>
|
||||||
|
#include <linux/path.h>
|
||||||
|
|
||||||
struct rpc_inode;
|
struct rpc_inode;
|
||||||
|
|
||||||
|
@ -51,8 +52,7 @@ struct rpc_clnt {
|
||||||
int cl_nodelen; /* nodename length */
|
int cl_nodelen; /* nodename length */
|
||||||
char cl_nodename[UNX_MAXNODENAME];
|
char cl_nodename[UNX_MAXNODENAME];
|
||||||
char cl_pathname[30];/* Path in rpc_pipe_fs */
|
char cl_pathname[30];/* Path in rpc_pipe_fs */
|
||||||
struct vfsmount * cl_vfsmnt;
|
struct path cl_path;
|
||||||
struct dentry * cl_dentry; /* inode */
|
|
||||||
struct rpc_clnt * cl_parent; /* Points to parent of clones */
|
struct rpc_clnt * cl_parent; /* Points to parent of clones */
|
||||||
struct rpc_rtt cl_rtt_default;
|
struct rpc_rtt cl_rtt_default;
|
||||||
struct rpc_timeout cl_timeout_default;
|
struct rpc_timeout cl_timeout_default;
|
||||||
|
|
|
@ -777,7 +777,7 @@ gss_create(struct rpc_clnt *clnt, rpc_authflavor_t flavor)
|
||||||
* that we supported only the old pipe. So we instead create
|
* that we supported only the old pipe. So we instead create
|
||||||
* the new pipe first.
|
* the new pipe first.
|
||||||
*/
|
*/
|
||||||
gss_auth->dentry[1] = rpc_mkpipe(clnt->cl_dentry,
|
gss_auth->dentry[1] = rpc_mkpipe(clnt->cl_path.dentry,
|
||||||
"gssd",
|
"gssd",
|
||||||
clnt, &gss_upcall_ops_v1,
|
clnt, &gss_upcall_ops_v1,
|
||||||
RPC_PIPE_WAIT_FOR_OPEN);
|
RPC_PIPE_WAIT_FOR_OPEN);
|
||||||
|
@ -786,7 +786,7 @@ gss_create(struct rpc_clnt *clnt, rpc_authflavor_t flavor)
|
||||||
goto err_put_mech;
|
goto err_put_mech;
|
||||||
}
|
}
|
||||||
|
|
||||||
gss_auth->dentry[0] = rpc_mkpipe(clnt->cl_dentry,
|
gss_auth->dentry[0] = rpc_mkpipe(clnt->cl_path.dentry,
|
||||||
gss_auth->mech->gm_name,
|
gss_auth->mech->gm_name,
|
||||||
clnt, &gss_upcall_ops_v0,
|
clnt, &gss_upcall_ops_v0,
|
||||||
RPC_PIPE_WAIT_FOR_OPEN);
|
RPC_PIPE_WAIT_FOR_OPEN);
|
||||||
|
|
|
@ -99,24 +99,24 @@ rpc_setup_pipedir(struct rpc_clnt *clnt, char *dir_name)
|
||||||
static uint32_t clntid;
|
static uint32_t clntid;
|
||||||
int error;
|
int error;
|
||||||
|
|
||||||
clnt->cl_vfsmnt = ERR_PTR(-ENOENT);
|
clnt->cl_path.mnt = ERR_PTR(-ENOENT);
|
||||||
clnt->cl_dentry = ERR_PTR(-ENOENT);
|
clnt->cl_path.dentry = ERR_PTR(-ENOENT);
|
||||||
if (dir_name == NULL)
|
if (dir_name == NULL)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
clnt->cl_vfsmnt = rpc_get_mount();
|
clnt->cl_path.mnt = rpc_get_mount();
|
||||||
if (IS_ERR(clnt->cl_vfsmnt))
|
if (IS_ERR(clnt->cl_path.mnt))
|
||||||
return PTR_ERR(clnt->cl_vfsmnt);
|
return PTR_ERR(clnt->cl_path.mnt);
|
||||||
|
|
||||||
for (;;) {
|
for (;;) {
|
||||||
snprintf(clnt->cl_pathname, sizeof(clnt->cl_pathname),
|
snprintf(clnt->cl_pathname, sizeof(clnt->cl_pathname),
|
||||||
"%s/clnt%x", dir_name,
|
"%s/clnt%x", dir_name,
|
||||||
(unsigned int)clntid++);
|
(unsigned int)clntid++);
|
||||||
clnt->cl_pathname[sizeof(clnt->cl_pathname) - 1] = '\0';
|
clnt->cl_pathname[sizeof(clnt->cl_pathname) - 1] = '\0';
|
||||||
clnt->cl_dentry = rpc_create_client_dir(clnt->cl_pathname, clnt);
|
clnt->cl_path.dentry = rpc_create_client_dir(clnt->cl_pathname, clnt);
|
||||||
if (!IS_ERR(clnt->cl_dentry))
|
if (!IS_ERR(clnt->cl_path.dentry))
|
||||||
return 0;
|
return 0;
|
||||||
error = PTR_ERR(clnt->cl_dentry);
|
error = PTR_ERR(clnt->cl_path.dentry);
|
||||||
if (error != -EEXIST) {
|
if (error != -EEXIST) {
|
||||||
printk(KERN_INFO "RPC: Couldn't create pipefs entry %s, error %d\n",
|
printk(KERN_INFO "RPC: Couldn't create pipefs entry %s, error %d\n",
|
||||||
clnt->cl_pathname, error);
|
clnt->cl_pathname, error);
|
||||||
|
@ -231,8 +231,8 @@ static struct rpc_clnt * rpc_new_client(const struct rpc_create_args *args, stru
|
||||||
return clnt;
|
return clnt;
|
||||||
|
|
||||||
out_no_auth:
|
out_no_auth:
|
||||||
if (!IS_ERR(clnt->cl_dentry)) {
|
if (!IS_ERR(clnt->cl_path.dentry)) {
|
||||||
rpc_remove_client_dir(clnt->cl_dentry);
|
rpc_remove_client_dir(clnt->cl_path.dentry);
|
||||||
rpc_put_mount();
|
rpc_put_mount();
|
||||||
}
|
}
|
||||||
out_no_path:
|
out_no_path:
|
||||||
|
@ -423,8 +423,8 @@ rpc_free_client(struct kref *kref)
|
||||||
|
|
||||||
dprintk("RPC: destroying %s client for %s\n",
|
dprintk("RPC: destroying %s client for %s\n",
|
||||||
clnt->cl_protname, clnt->cl_server);
|
clnt->cl_protname, clnt->cl_server);
|
||||||
if (!IS_ERR(clnt->cl_dentry)) {
|
if (!IS_ERR(clnt->cl_path.dentry)) {
|
||||||
rpc_remove_client_dir(clnt->cl_dentry);
|
rpc_remove_client_dir(clnt->cl_path.dentry);
|
||||||
rpc_put_mount();
|
rpc_put_mount();
|
||||||
}
|
}
|
||||||
if (clnt->cl_parent != clnt) {
|
if (clnt->cl_parent != clnt) {
|
||||||
|
|
Loading…
Reference in a new issue