diff options
Diffstat (limited to 'fs/nfs/unlink.c')
-rw-r--r-- | fs/nfs/unlink.c | 45 |
1 files changed, 3 insertions, 42 deletions
diff --git a/fs/nfs/unlink.c b/fs/nfs/unlink.c index 4f9319a2e567..3210a03342f9 100644 --- a/fs/nfs/unlink.c +++ b/fs/nfs/unlink.c | |||
@@ -20,15 +20,6 @@ | |||
20 | #include "iostat.h" | 20 | #include "iostat.h" |
21 | #include "delegation.h" | 21 | #include "delegation.h" |
22 | 22 | ||
23 | struct nfs_unlinkdata { | ||
24 | struct hlist_node list; | ||
25 | struct nfs_removeargs args; | ||
26 | struct nfs_removeres res; | ||
27 | struct inode *dir; | ||
28 | struct rpc_cred *cred; | ||
29 | struct nfs_fattr dir_attr; | ||
30 | }; | ||
31 | |||
32 | /** | 23 | /** |
33 | * nfs_free_unlinkdata - release data from a sillydelete operation. | 24 | * nfs_free_unlinkdata - release data from a sillydelete operation. |
34 | * @data: pointer to unlink structure. | 25 | * @data: pointer to unlink structure. |
@@ -107,25 +98,16 @@ static void nfs_async_unlink_release(void *calldata) | |||
107 | nfs_sb_deactive(sb); | 98 | nfs_sb_deactive(sb); |
108 | } | 99 | } |
109 | 100 | ||
110 | #if defined(CONFIG_NFS_V4_1) | 101 | static void nfs_unlink_prepare(struct rpc_task *task, void *calldata) |
111 | void nfs_unlink_prepare(struct rpc_task *task, void *calldata) | ||
112 | { | 102 | { |
113 | struct nfs_unlinkdata *data = calldata; | 103 | struct nfs_unlinkdata *data = calldata; |
114 | struct nfs_server *server = NFS_SERVER(data->dir); | 104 | NFS_PROTO(data->dir)->unlink_rpc_prepare(task, data); |
115 | |||
116 | if (nfs4_setup_sequence(server, &data->args.seq_args, | ||
117 | &data->res.seq_res, 1, task)) | ||
118 | return; | ||
119 | rpc_call_start(task); | ||
120 | } | 105 | } |
121 | #endif /* CONFIG_NFS_V4_1 */ | ||
122 | 106 | ||
123 | static const struct rpc_call_ops nfs_unlink_ops = { | 107 | static const struct rpc_call_ops nfs_unlink_ops = { |
124 | .rpc_call_done = nfs_async_unlink_done, | 108 | .rpc_call_done = nfs_async_unlink_done, |
125 | .rpc_release = nfs_async_unlink_release, | 109 | .rpc_release = nfs_async_unlink_release, |
126 | #if defined(CONFIG_NFS_V4_1) | ||
127 | .rpc_call_prepare = nfs_unlink_prepare, | 110 | .rpc_call_prepare = nfs_unlink_prepare, |
128 | #endif /* CONFIG_NFS_V4_1 */ | ||
129 | }; | 111 | }; |
130 | 112 | ||
131 | static int nfs_do_call_unlink(struct dentry *parent, struct inode *dir, struct nfs_unlinkdata *data) | 113 | static int nfs_do_call_unlink(struct dentry *parent, struct inode *dir, struct nfs_unlinkdata *data) |
@@ -341,18 +323,6 @@ nfs_cancel_async_unlink(struct dentry *dentry) | |||
341 | spin_unlock(&dentry->d_lock); | 323 | spin_unlock(&dentry->d_lock); |
342 | } | 324 | } |
343 | 325 | ||
344 | struct nfs_renamedata { | ||
345 | struct nfs_renameargs args; | ||
346 | struct nfs_renameres res; | ||
347 | struct rpc_cred *cred; | ||
348 | struct inode *old_dir; | ||
349 | struct dentry *old_dentry; | ||
350 | struct nfs_fattr old_fattr; | ||
351 | struct inode *new_dir; | ||
352 | struct dentry *new_dentry; | ||
353 | struct nfs_fattr new_fattr; | ||
354 | }; | ||
355 | |||
356 | /** | 326 | /** |
357 | * nfs_async_rename_done - Sillyrename post-processing | 327 | * nfs_async_rename_done - Sillyrename post-processing |
358 | * @task: rpc_task of the sillyrename | 328 | * @task: rpc_task of the sillyrename |
@@ -403,25 +373,16 @@ static void nfs_async_rename_release(void *calldata) | |||
403 | kfree(data); | 373 | kfree(data); |
404 | } | 374 | } |
405 | 375 | ||
406 | #if defined(CONFIG_NFS_V4_1) | ||
407 | static void nfs_rename_prepare(struct rpc_task *task, void *calldata) | 376 | static void nfs_rename_prepare(struct rpc_task *task, void *calldata) |
408 | { | 377 | { |
409 | struct nfs_renamedata *data = calldata; | 378 | struct nfs_renamedata *data = calldata; |
410 | struct nfs_server *server = NFS_SERVER(data->old_dir); | 379 | NFS_PROTO(data->old_dir)->rename_rpc_prepare(task, data); |
411 | |||
412 | if (nfs4_setup_sequence(server, &data->args.seq_args, | ||
413 | &data->res.seq_res, 1, task)) | ||
414 | return; | ||
415 | rpc_call_start(task); | ||
416 | } | 380 | } |
417 | #endif /* CONFIG_NFS_V4_1 */ | ||
418 | 381 | ||
419 | static const struct rpc_call_ops nfs_rename_ops = { | 382 | static const struct rpc_call_ops nfs_rename_ops = { |
420 | .rpc_call_done = nfs_async_rename_done, | 383 | .rpc_call_done = nfs_async_rename_done, |
421 | .rpc_release = nfs_async_rename_release, | 384 | .rpc_release = nfs_async_rename_release, |
422 | #if defined(CONFIG_NFS_V4_1) | ||
423 | .rpc_call_prepare = nfs_rename_prepare, | 385 | .rpc_call_prepare = nfs_rename_prepare, |
424 | #endif /* CONFIG_NFS_V4_1 */ | ||
425 | }; | 386 | }; |
426 | 387 | ||
427 | /** | 388 | /** |