summaryrefslogtreecommitdiffstats
path: root/net/sunrpc/rpc_pipe.c
diff options
context:
space:
mode:
authorTrond Myklebust2006-07-31 23:17:18 +0200
committerTrond Myklebust2006-08-24 21:50:32 +0200
commitdff02cc1a34fcb60904a2c57cb351857cc11219e (patch)
treee15957078e7f03f8b2b758cee0f7362d42f83c80 /net/sunrpc/rpc_pipe.c
parentSUNRPC: make rpc_unlink() take a dentry argument instead of a path (diff)
downloadkernel-qcow2-linux-dff02cc1a34fcb60904a2c57cb351857cc11219e.tar.gz
kernel-qcow2-linux-dff02cc1a34fcb60904a2c57cb351857cc11219e.tar.xz
kernel-qcow2-linux-dff02cc1a34fcb60904a2c57cb351857cc11219e.zip
NFS: clean up rpc_rmdir
Make it take a dentry argument instead of a path Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com> (cherry picked from 648d4116eb2509f010f7f34704a650150309b3e7 commit)
Diffstat (limited to 'net/sunrpc/rpc_pipe.c')
-rw-r--r--net/sunrpc/rpc_pipe.c18
1 files changed, 5 insertions, 13 deletions
diff --git a/net/sunrpc/rpc_pipe.c b/net/sunrpc/rpc_pipe.c
index 9144f2767b66..9c355e1ae61a 100644
--- a/net/sunrpc/rpc_pipe.c
+++ b/net/sunrpc/rpc_pipe.c
@@ -684,28 +684,20 @@ err_dput:
}
int
-rpc_rmdir(char *path)
+rpc_rmdir(struct dentry *dentry)
{
- struct nameidata nd;
- struct dentry *dentry;
+ struct dentry *parent;
struct inode *dir;
int error;
- if ((error = rpc_lookup_parent(path, &nd)) != 0)
- return error;
- dir = nd.dentry->d_inode;
+ parent = dget_parent(dentry);
+ dir = parent->d_inode;
mutex_lock_nested(&dir->i_mutex, I_MUTEX_PARENT);
- dentry = lookup_one_len(nd.last.name, nd.dentry, nd.last.len);
- if (IS_ERR(dentry)) {
- error = PTR_ERR(dentry);
- goto out_release;
- }
rpc_depopulate(dentry);
error = __rpc_rmdir(dir, dentry);
dput(dentry);
-out_release:
mutex_unlock(&dir->i_mutex);
- rpc_release_path(&nd);
+ dput(parent);
return error;
}