diff options
Diffstat (limited to 'fs/nfs/unlink.c')
-rw-r--r-- | fs/nfs/unlink.c | 28 |
1 files changed, 8 insertions, 20 deletions
diff --git a/fs/nfs/unlink.c b/fs/nfs/unlink.c index 6660d9a53345..757415363422 100644 --- a/fs/nfs/unlink.c +++ b/fs/nfs/unlink.c | |||
@@ -71,24 +71,6 @@ static void nfs_dec_sillycount(struct inode *dir) | |||
71 | } | 71 | } |
72 | 72 | ||
73 | /** | 73 | /** |
74 | * nfs_async_unlink_init - Initialize the RPC info | ||
75 | * task: rpc_task of the sillydelete | ||
76 | */ | ||
77 | static void nfs_async_unlink_init(struct rpc_task *task, void *calldata) | ||
78 | { | ||
79 | struct nfs_unlinkdata *data = calldata; | ||
80 | struct inode *dir = data->dir; | ||
81 | struct rpc_message msg = { | ||
82 | .rpc_argp = &data->args, | ||
83 | .rpc_resp = &data->res, | ||
84 | .rpc_cred = data->cred, | ||
85 | }; | ||
86 | |||
87 | NFS_PROTO(dir)->unlink_setup(&msg, dir); | ||
88 | rpc_call_setup(task, &msg, 0); | ||
89 | } | ||
90 | |||
91 | /** | ||
92 | * nfs_async_unlink_done - Sillydelete post-processing | 74 | * nfs_async_unlink_done - Sillydelete post-processing |
93 | * @task: rpc_task of the sillydelete | 75 | * @task: rpc_task of the sillydelete |
94 | * | 76 | * |
@@ -120,14 +102,19 @@ static void nfs_async_unlink_release(void *calldata) | |||
120 | } | 102 | } |
121 | 103 | ||
122 | static const struct rpc_call_ops nfs_unlink_ops = { | 104 | static const struct rpc_call_ops nfs_unlink_ops = { |
123 | .rpc_call_prepare = nfs_async_unlink_init, | ||
124 | .rpc_call_done = nfs_async_unlink_done, | 105 | .rpc_call_done = nfs_async_unlink_done, |
125 | .rpc_release = nfs_async_unlink_release, | 106 | .rpc_release = nfs_async_unlink_release, |
126 | }; | 107 | }; |
127 | 108 | ||
128 | static int nfs_do_call_unlink(struct dentry *parent, struct inode *dir, struct nfs_unlinkdata *data) | 109 | static int nfs_do_call_unlink(struct dentry *parent, struct inode *dir, struct nfs_unlinkdata *data) |
129 | { | 110 | { |
111 | struct rpc_message msg = { | ||
112 | .rpc_argp = &data->args, | ||
113 | .rpc_resp = &data->res, | ||
114 | .rpc_cred = data->cred, | ||
115 | }; | ||
130 | struct rpc_task_setup task_setup_data = { | 116 | struct rpc_task_setup task_setup_data = { |
117 | .rpc_message = &msg, | ||
131 | .callback_ops = &nfs_unlink_ops, | 118 | .callback_ops = &nfs_unlink_ops, |
132 | .callback_data = data, | 119 | .callback_data = data, |
133 | .flags = RPC_TASK_ASYNC, | 120 | .flags = RPC_TASK_ASYNC, |
@@ -165,8 +152,9 @@ static int nfs_do_call_unlink(struct dentry *parent, struct inode *dir, struct n | |||
165 | data->args.fh = NFS_FH(dir); | 152 | data->args.fh = NFS_FH(dir); |
166 | nfs_fattr_init(&data->res.dir_attr); | 153 | nfs_fattr_init(&data->res.dir_attr); |
167 | 154 | ||
168 | task_setup_data.rpc_client = NFS_CLIENT(dir); | 155 | NFS_PROTO(dir)->unlink_setup(&msg, dir); |
169 | 156 | ||
157 | task_setup_data.rpc_client = NFS_CLIENT(dir); | ||
170 | task = rpc_run_task(&task_setup_data); | 158 | task = rpc_run_task(&task_setup_data); |
171 | if (!IS_ERR(task)) | 159 | if (!IS_ERR(task)) |
172 | rpc_put_task(task); | 160 | rpc_put_task(task); |