aboutsummaryrefslogtreecommitdiffstats
path: root/fs/ocfs2/stack_o2cb.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/ocfs2/stack_o2cb.c')
-rw-r--r--fs/ocfs2/stack_o2cb.c22
1 files changed, 13 insertions, 9 deletions
diff --git a/fs/ocfs2/stack_o2cb.c b/fs/ocfs2/stack_o2cb.c
index 3038c92af493..c4cedff365df 100644
--- a/fs/ocfs2/stack_o2cb.c
+++ b/fs/ocfs2/stack_o2cb.c
@@ -161,20 +161,26 @@ static int dlm_status_to_errno(enum dlm_status status)
161 161
162static void o2dlm_lock_ast_wrapper(void *astarg) 162static void o2dlm_lock_ast_wrapper(void *astarg)
163{ 163{
164 union ocfs2_dlm_lksb *lksb = astarg;
165
164 BUG_ON(o2cb_stack.sp_proto == NULL); 166 BUG_ON(o2cb_stack.sp_proto == NULL);
165 167
166 o2cb_stack.sp_proto->lp_lock_ast(astarg); 168 o2cb_stack.sp_proto->lp_lock_ast(lksb);
167} 169}
168 170
169static void o2dlm_blocking_ast_wrapper(void *astarg, int level) 171static void o2dlm_blocking_ast_wrapper(void *astarg, int level)
170{ 172{
173 union ocfs2_dlm_lksb *lksb = astarg;
174
171 BUG_ON(o2cb_stack.sp_proto == NULL); 175 BUG_ON(o2cb_stack.sp_proto == NULL);
172 176
173 o2cb_stack.sp_proto->lp_blocking_ast(astarg, level); 177 o2cb_stack.sp_proto->lp_blocking_ast(lksb, level);
174} 178}
175 179
176static void o2dlm_unlock_ast_wrapper(void *astarg, enum dlm_status status) 180static void o2dlm_unlock_ast_wrapper(void *astarg, enum dlm_status status)
177{ 181{
182 union ocfs2_dlm_lksb *lksb = astarg;
183
178 int error = dlm_status_to_errno(status); 184 int error = dlm_status_to_errno(status);
179 185
180 BUG_ON(o2cb_stack.sp_proto == NULL); 186 BUG_ON(o2cb_stack.sp_proto == NULL);
@@ -193,7 +199,7 @@ static void o2dlm_unlock_ast_wrapper(void *astarg, enum dlm_status status)
193 if (status == DLM_CANCELGRANT) 199 if (status == DLM_CANCELGRANT)
194 return; 200 return;
195 201
196 o2cb_stack.sp_proto->lp_unlock_ast(astarg, error); 202 o2cb_stack.sp_proto->lp_unlock_ast(lksb, error);
197} 203}
198 204
199static int o2cb_dlm_lock(struct ocfs2_cluster_connection *conn, 205static int o2cb_dlm_lock(struct ocfs2_cluster_connection *conn,
@@ -201,8 +207,7 @@ static int o2cb_dlm_lock(struct ocfs2_cluster_connection *conn,
201 union ocfs2_dlm_lksb *lksb, 207 union ocfs2_dlm_lksb *lksb,
202 u32 flags, 208 u32 flags,
203 void *name, 209 void *name,
204 unsigned int namelen, 210 unsigned int namelen)
205 void *astarg)
206{ 211{
207 enum dlm_status status; 212 enum dlm_status status;
208 int o2dlm_mode = mode_to_o2dlm(mode); 213 int o2dlm_mode = mode_to_o2dlm(mode);
@@ -211,7 +216,7 @@ static int o2cb_dlm_lock(struct ocfs2_cluster_connection *conn,
211 216
212 status = dlmlock(conn->cc_lockspace, o2dlm_mode, &lksb->lksb_o2dlm, 217 status = dlmlock(conn->cc_lockspace, o2dlm_mode, &lksb->lksb_o2dlm,
213 o2dlm_flags, name, namelen, 218 o2dlm_flags, name, namelen,
214 o2dlm_lock_ast_wrapper, astarg, 219 o2dlm_lock_ast_wrapper, lksb,
215 o2dlm_blocking_ast_wrapper); 220 o2dlm_blocking_ast_wrapper);
216 ret = dlm_status_to_errno(status); 221 ret = dlm_status_to_errno(status);
217 return ret; 222 return ret;
@@ -219,15 +224,14 @@ static int o2cb_dlm_lock(struct ocfs2_cluster_connection *conn,
219 224
220static int o2cb_dlm_unlock(struct ocfs2_cluster_connection *conn, 225static int o2cb_dlm_unlock(struct ocfs2_cluster_connection *conn,
221 union ocfs2_dlm_lksb *lksb, 226 union ocfs2_dlm_lksb *lksb,
222 u32 flags, 227 u32 flags)
223 void *astarg)
224{ 228{
225 enum dlm_status status; 229 enum dlm_status status;
226 int o2dlm_flags = flags_to_o2dlm(flags); 230 int o2dlm_flags = flags_to_o2dlm(flags);
227 int ret; 231 int ret;
228 232
229 status = dlmunlock(conn->cc_lockspace, &lksb->lksb_o2dlm, 233 status = dlmunlock(conn->cc_lockspace, &lksb->lksb_o2dlm,
230 o2dlm_flags, o2dlm_unlock_ast_wrapper, astarg); 234 o2dlm_flags, o2dlm_unlock_ast_wrapper, lksb);
231 ret = dlm_status_to_errno(status); 235 ret = dlm_status_to_errno(status);
232 return ret; 236 return ret;
233} 237}