]> git.karo-electronics.de Git - mv-sheeva.git/commitdiff
SUNRPC: remove RPC pipefs mount point manipulations from RPC clients code
authorStanislav Kinsbursky <skinsbursky@parallels.com>
Wed, 11 Jan 2012 15:18:34 +0000 (19:18 +0400)
committerTrond Myklebust <Trond.Myklebust@netapp.com>
Tue, 31 Jan 2012 23:20:25 +0000 (18:20 -0500)
v2:
1) Updated due to changes in the first patch of the series.

Now, with RPC pipefs mount notifications handling in RPC clients, we can remove
mount point creation and destruction. RPC clients dentries will be created on
PipeFS mount event and removed on umount event.

Signed-off-by: Stanislav Kinsbursky <skinsbursky@parallels.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
net/sunrpc/clnt.c

index c89ceb80fe87fa0c4650aecaa123af6d223bc31d..e3ced3061212107b800e0d0d56083aab06be64a8 100644 (file)
@@ -109,17 +109,12 @@ static void __rpc_clnt_remove_pipedir(struct rpc_clnt *clnt)
 static void rpc_clnt_remove_pipedir(struct rpc_clnt *clnt)
 {
        struct super_block *pipefs_sb;
-       int put_mnt = 0;
 
        pipefs_sb = rpc_get_sb_net(clnt->cl_xprt->xprt_net);
        if (pipefs_sb) {
-               if (clnt->cl_path.dentry)
-                       put_mnt = 1;
                __rpc_clnt_remove_pipedir(clnt);
                rpc_put_sb_net(clnt->cl_xprt->xprt_net);
        }
-       if (put_mnt)
-               rpc_put_mount();
 }
 
 static struct dentry *rpc_setup_pipedir_sb(struct super_block *sb,
@@ -165,21 +160,13 @@ rpc_setup_pipedir(struct rpc_clnt *clnt, char *dir_name)
        clnt->cl_path.dentry = NULL;
        if (dir_name == NULL)
                return 0;
-
-       path.mnt = rpc_get_mount();
-       if (IS_ERR(path.mnt))
-               return PTR_ERR(path.mnt);
        pipefs_sb = rpc_get_sb_net(clnt->cl_xprt->xprt_net);
-       if (!pipefs_sb) {
-               rpc_put_mount();
-               return -ENOENT;
-       }
+       if (!pipefs_sb)
+               return 0;
        path.dentry = rpc_setup_pipedir_sb(pipefs_sb, clnt, dir_name);
        rpc_put_sb_net(clnt->cl_xprt->xprt_net);
-       if (IS_ERR(path.dentry)) {
-               rpc_put_mount();
+       if (IS_ERR(path.dentry))
                return PTR_ERR(path.dentry);
-       }
        clnt->cl_path = path;
        return 0;
 }