aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nfs/proc.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/nfs/proc.c')
-rw-r--r--fs/nfs/proc.c40
1 files changed, 12 insertions, 28 deletions
diff --git a/fs/nfs/proc.c b/fs/nfs/proc.c
index 7be0ee2782cb..845cdde1d8b7 100644
--- a/fs/nfs/proc.c
+++ b/fs/nfs/proc.c
@@ -272,14 +272,14 @@ nfs_proc_mknod(struct inode *dir, struct dentry *dentry, struct iattr *sattr,
272static int 272static int
273nfs_proc_remove(struct inode *dir, struct qstr *name) 273nfs_proc_remove(struct inode *dir, struct qstr *name)
274{ 274{
275 struct nfs_diropargs arg = { 275 struct nfs_removeargs arg = {
276 .fh = NFS_FH(dir), 276 .fh = NFS_FH(dir),
277 .name = name->name, 277 .name.len = name->len,
278 .len = name->len 278 .name.name = name->name,
279 }; 279 };
280 struct rpc_message msg = { 280 struct rpc_message msg = {
281 .rpc_proc = &nfs_procedures[NFSPROC_REMOVE], 281 .rpc_proc = &nfs_procedures[NFSPROC_REMOVE],
282 .rpc_argp = &arg, 282 .rpc_argp = &arg,
283 }; 283 };
284 int status; 284 int status;
285 285
@@ -291,32 +291,16 @@ nfs_proc_remove(struct inode *dir, struct qstr *name)
291 return status; 291 return status;
292} 292}
293 293
294static int 294static void
295nfs_proc_unlink_setup(struct rpc_message *msg, struct dentry *dir, struct qstr *name) 295nfs_proc_unlink_setup(struct rpc_message *msg, struct inode *dir)
296{ 296{
297 struct nfs_diropargs *arg;
298
299 arg = kmalloc(sizeof(*arg), GFP_KERNEL);
300 if (!arg)
301 return -ENOMEM;
302 arg->fh = NFS_FH(dir->d_inode);
303 arg->name = name->name;
304 arg->len = name->len;
305 msg->rpc_proc = &nfs_procedures[NFSPROC_REMOVE]; 297 msg->rpc_proc = &nfs_procedures[NFSPROC_REMOVE];
306 msg->rpc_argp = arg;
307 return 0;
308} 298}
309 299
310static int 300static int nfs_proc_unlink_done(struct rpc_task *task, struct inode *dir)
311nfs_proc_unlink_done(struct dentry *dir, struct rpc_task *task)
312{ 301{
313 struct rpc_message *msg = &task->tk_msg; 302 nfs_mark_for_revalidate(dir);
314 303 return 1;
315 if (msg->rpc_argp) {
316 nfs_mark_for_revalidate(dir->d_inode);
317 kfree(msg->rpc_argp);
318 }
319 return 0;
320} 304}
321 305
322static int 306static int