diff options
-rw-r--r-- | fs/ocfs2/dlmglue.c | 34 | ||||
-rw-r--r-- | fs/ocfs2/stack_o2cb.c | 22 | ||||
-rw-r--r-- | fs/ocfs2/stack_user.c | 29 | ||||
-rw-r--r-- | fs/ocfs2/stackglue.c | 19 | ||||
-rw-r--r-- | fs/ocfs2/stackglue.h | 42 |
5 files changed, 70 insertions, 76 deletions
diff --git a/fs/ocfs2/dlmglue.c b/fs/ocfs2/dlmglue.c index e044019cb3b1..1ba67df00924 100644 --- a/fs/ocfs2/dlmglue.c +++ b/fs/ocfs2/dlmglue.c | |||
@@ -297,6 +297,11 @@ static inline int ocfs2_is_inode_lock(struct ocfs2_lock_res *lockres) | |||
297 | lockres->l_type == OCFS2_LOCK_TYPE_OPEN; | 297 | lockres->l_type == OCFS2_LOCK_TYPE_OPEN; |
298 | } | 298 | } |
299 | 299 | ||
300 | static inline struct ocfs2_lock_res *ocfs2_lksb_to_lock_res(union ocfs2_dlm_lksb *lksb) | ||
301 | { | ||
302 | return container_of(lksb, struct ocfs2_lock_res, l_lksb); | ||
303 | } | ||
304 | |||
300 | static inline struct inode *ocfs2_lock_res_inode(struct ocfs2_lock_res *lockres) | 305 | static inline struct inode *ocfs2_lock_res_inode(struct ocfs2_lock_res *lockres) |
301 | { | 306 | { |
302 | BUG_ON(!ocfs2_is_inode_lock(lockres)); | 307 | BUG_ON(!ocfs2_is_inode_lock(lockres)); |
@@ -1041,9 +1046,9 @@ static unsigned int lockres_set_pending(struct ocfs2_lock_res *lockres) | |||
1041 | } | 1046 | } |
1042 | 1047 | ||
1043 | 1048 | ||
1044 | static void ocfs2_blocking_ast(void *opaque, int level) | 1049 | static void ocfs2_blocking_ast(union ocfs2_dlm_lksb *lksb, int level) |
1045 | { | 1050 | { |
1046 | struct ocfs2_lock_res *lockres = opaque; | 1051 | struct ocfs2_lock_res *lockres = ocfs2_lksb_to_lock_res(lksb); |
1047 | struct ocfs2_super *osb = ocfs2_get_lockres_osb(lockres); | 1052 | struct ocfs2_super *osb = ocfs2_get_lockres_osb(lockres); |
1048 | int needs_downconvert; | 1053 | int needs_downconvert; |
1049 | unsigned long flags; | 1054 | unsigned long flags; |
@@ -1072,9 +1077,9 @@ static void ocfs2_blocking_ast(void *opaque, int level) | |||
1072 | ocfs2_wake_downconvert_thread(osb); | 1077 | ocfs2_wake_downconvert_thread(osb); |
1073 | } | 1078 | } |
1074 | 1079 | ||
1075 | static void ocfs2_locking_ast(void *opaque) | 1080 | static void ocfs2_locking_ast(union ocfs2_dlm_lksb *lksb) |
1076 | { | 1081 | { |
1077 | struct ocfs2_lock_res *lockres = opaque; | 1082 | struct ocfs2_lock_res *lockres = ocfs2_lksb_to_lock_res(lksb); |
1078 | struct ocfs2_super *osb = ocfs2_get_lockres_osb(lockres); | 1083 | struct ocfs2_super *osb = ocfs2_get_lockres_osb(lockres); |
1079 | unsigned long flags; | 1084 | unsigned long flags; |
1080 | int status; | 1085 | int status; |
@@ -1189,8 +1194,7 @@ static int ocfs2_lock_create(struct ocfs2_super *osb, | |||
1189 | &lockres->l_lksb, | 1194 | &lockres->l_lksb, |
1190 | dlm_flags, | 1195 | dlm_flags, |
1191 | lockres->l_name, | 1196 | lockres->l_name, |
1192 | OCFS2_LOCK_ID_MAX_LEN - 1, | 1197 | OCFS2_LOCK_ID_MAX_LEN - 1); |
1193 | lockres); | ||
1194 | lockres_clear_pending(lockres, gen, osb); | 1198 | lockres_clear_pending(lockres, gen, osb); |
1195 | if (ret) { | 1199 | if (ret) { |
1196 | ocfs2_log_dlm_error("ocfs2_dlm_lock", ret, lockres); | 1200 | ocfs2_log_dlm_error("ocfs2_dlm_lock", ret, lockres); |
@@ -1421,8 +1425,7 @@ again: | |||
1421 | &lockres->l_lksb, | 1425 | &lockres->l_lksb, |
1422 | lkm_flags, | 1426 | lkm_flags, |
1423 | lockres->l_name, | 1427 | lockres->l_name, |
1424 | OCFS2_LOCK_ID_MAX_LEN - 1, | 1428 | OCFS2_LOCK_ID_MAX_LEN - 1); |
1425 | lockres); | ||
1426 | lockres_clear_pending(lockres, gen, osb); | 1429 | lockres_clear_pending(lockres, gen, osb); |
1427 | if (ret) { | 1430 | if (ret) { |
1428 | if (!(lkm_flags & DLM_LKF_NOQUEUE) || | 1431 | if (!(lkm_flags & DLM_LKF_NOQUEUE) || |
@@ -1859,8 +1862,7 @@ int ocfs2_file_lock(struct file *file, int ex, int trylock) | |||
1859 | spin_unlock_irqrestore(&lockres->l_lock, flags); | 1862 | spin_unlock_irqrestore(&lockres->l_lock, flags); |
1860 | 1863 | ||
1861 | ret = ocfs2_dlm_lock(osb->cconn, level, &lockres->l_lksb, lkm_flags, | 1864 | ret = ocfs2_dlm_lock(osb->cconn, level, &lockres->l_lksb, lkm_flags, |
1862 | lockres->l_name, OCFS2_LOCK_ID_MAX_LEN - 1, | 1865 | lockres->l_name, OCFS2_LOCK_ID_MAX_LEN - 1); |
1863 | lockres); | ||
1864 | if (ret) { | 1866 | if (ret) { |
1865 | if (!trylock || (ret != -EAGAIN)) { | 1867 | if (!trylock || (ret != -EAGAIN)) { |
1866 | ocfs2_log_dlm_error("ocfs2_dlm_lock", ret, lockres); | 1868 | ocfs2_log_dlm_error("ocfs2_dlm_lock", ret, lockres); |
@@ -3056,9 +3058,9 @@ void ocfs2_dlm_shutdown(struct ocfs2_super *osb, | |||
3056 | mlog_exit_void(); | 3058 | mlog_exit_void(); |
3057 | } | 3059 | } |
3058 | 3060 | ||
3059 | static void ocfs2_unlock_ast(void *opaque, int error) | 3061 | static void ocfs2_unlock_ast(union ocfs2_dlm_lksb *lksb, int error) |
3060 | { | 3062 | { |
3061 | struct ocfs2_lock_res *lockres = opaque; | 3063 | struct ocfs2_lock_res *lockres = ocfs2_lksb_to_lock_res(lksb); |
3062 | unsigned long flags; | 3064 | unsigned long flags; |
3063 | 3065 | ||
3064 | mlog_entry_void(); | 3066 | mlog_entry_void(); |
@@ -3167,8 +3169,7 @@ static int ocfs2_drop_lock(struct ocfs2_super *osb, | |||
3167 | 3169 | ||
3168 | mlog(0, "lock %s\n", lockres->l_name); | 3170 | mlog(0, "lock %s\n", lockres->l_name); |
3169 | 3171 | ||
3170 | ret = ocfs2_dlm_unlock(osb->cconn, &lockres->l_lksb, lkm_flags, | 3172 | ret = ocfs2_dlm_unlock(osb->cconn, &lockres->l_lksb, lkm_flags); |
3171 | lockres); | ||
3172 | if (ret) { | 3173 | if (ret) { |
3173 | ocfs2_log_dlm_error("ocfs2_dlm_unlock", ret, lockres); | 3174 | ocfs2_log_dlm_error("ocfs2_dlm_unlock", ret, lockres); |
3174 | mlog(ML_ERROR, "lockres flags: %lu\n", lockres->l_flags); | 3175 | mlog(ML_ERROR, "lockres flags: %lu\n", lockres->l_flags); |
@@ -3309,8 +3310,7 @@ static int ocfs2_downconvert_lock(struct ocfs2_super *osb, | |||
3309 | &lockres->l_lksb, | 3310 | &lockres->l_lksb, |
3310 | dlm_flags, | 3311 | dlm_flags, |
3311 | lockres->l_name, | 3312 | lockres->l_name, |
3312 | OCFS2_LOCK_ID_MAX_LEN - 1, | 3313 | OCFS2_LOCK_ID_MAX_LEN - 1); |
3313 | lockres); | ||
3314 | lockres_clear_pending(lockres, generation, osb); | 3314 | lockres_clear_pending(lockres, generation, osb); |
3315 | if (ret) { | 3315 | if (ret) { |
3316 | ocfs2_log_dlm_error("ocfs2_dlm_lock", ret, lockres); | 3316 | ocfs2_log_dlm_error("ocfs2_dlm_lock", ret, lockres); |
@@ -3365,7 +3365,7 @@ static int ocfs2_cancel_convert(struct ocfs2_super *osb, | |||
3365 | mlog(0, "lock %s\n", lockres->l_name); | 3365 | mlog(0, "lock %s\n", lockres->l_name); |
3366 | 3366 | ||
3367 | ret = ocfs2_dlm_unlock(osb->cconn, &lockres->l_lksb, | 3367 | ret = ocfs2_dlm_unlock(osb->cconn, &lockres->l_lksb, |
3368 | DLM_LKF_CANCEL, lockres); | 3368 | DLM_LKF_CANCEL); |
3369 | if (ret) { | 3369 | if (ret) { |
3370 | ocfs2_log_dlm_error("ocfs2_dlm_unlock", ret, lockres); | 3370 | ocfs2_log_dlm_error("ocfs2_dlm_unlock", ret, lockres); |
3371 | ocfs2_recover_from_dlm_error(lockres, 0); | 3371 | ocfs2_recover_from_dlm_error(lockres, 0); |
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 | ||
162 | static void o2dlm_lock_ast_wrapper(void *astarg) | 162 | static 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 | ||
169 | static void o2dlm_blocking_ast_wrapper(void *astarg, int level) | 171 | static 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 | ||
176 | static void o2dlm_unlock_ast_wrapper(void *astarg, enum dlm_status status) | 180 | static 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 | ||
199 | static int o2cb_dlm_lock(struct ocfs2_cluster_connection *conn, | 205 | static 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 | ||
220 | static int o2cb_dlm_unlock(struct ocfs2_cluster_connection *conn, | 225 | static 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 | } |
diff --git a/fs/ocfs2/stack_user.c b/fs/ocfs2/stack_user.c index da78a2a334fd..129b93159cca 100644 --- a/fs/ocfs2/stack_user.c +++ b/fs/ocfs2/stack_user.c | |||
@@ -25,7 +25,6 @@ | |||
25 | #include <linux/reboot.h> | 25 | #include <linux/reboot.h> |
26 | #include <asm/uaccess.h> | 26 | #include <asm/uaccess.h> |
27 | 27 | ||
28 | #include "ocfs2.h" /* For struct ocfs2_lock_res */ | ||
29 | #include "stackglue.h" | 28 | #include "stackglue.h" |
30 | 29 | ||
31 | #include <linux/dlm_plock.h> | 30 | #include <linux/dlm_plock.h> |
@@ -664,16 +663,10 @@ static void ocfs2_control_exit(void) | |||
664 | -rc); | 663 | -rc); |
665 | } | 664 | } |
666 | 665 | ||
667 | static struct dlm_lksb *fsdlm_astarg_to_lksb(void *astarg) | ||
668 | { | ||
669 | struct ocfs2_lock_res *res = astarg; | ||
670 | return &res->l_lksb.lksb_fsdlm; | ||
671 | } | ||
672 | |||
673 | static void fsdlm_lock_ast_wrapper(void *astarg) | 666 | static void fsdlm_lock_ast_wrapper(void *astarg) |
674 | { | 667 | { |
675 | struct dlm_lksb *lksb = fsdlm_astarg_to_lksb(astarg); | 668 | union ocfs2_dlm_lksb *lksb = astarg; |
676 | int status = lksb->sb_status; | 669 | int status = lksb->lksb_fsdlm.sb_status; |
677 | 670 | ||
678 | BUG_ON(ocfs2_user_plugin.sp_proto == NULL); | 671 | BUG_ON(ocfs2_user_plugin.sp_proto == NULL); |
679 | 672 | ||
@@ -688,16 +681,18 @@ static void fsdlm_lock_ast_wrapper(void *astarg) | |||
688 | */ | 681 | */ |
689 | 682 | ||
690 | if (status == -DLM_EUNLOCK || status == -DLM_ECANCEL) | 683 | if (status == -DLM_EUNLOCK || status == -DLM_ECANCEL) |
691 | ocfs2_user_plugin.sp_proto->lp_unlock_ast(astarg, 0); | 684 | ocfs2_user_plugin.sp_proto->lp_unlock_ast(lksb, 0); |
692 | else | 685 | else |
693 | ocfs2_user_plugin.sp_proto->lp_lock_ast(astarg); | 686 | ocfs2_user_plugin.sp_proto->lp_lock_ast(lksb); |
694 | } | 687 | } |
695 | 688 | ||
696 | static void fsdlm_blocking_ast_wrapper(void *astarg, int level) | 689 | static void fsdlm_blocking_ast_wrapper(void *astarg, int level) |
697 | { | 690 | { |
691 | union ocfs2_dlm_lksb *lksb = astarg; | ||
692 | |||
698 | BUG_ON(ocfs2_user_plugin.sp_proto == NULL); | 693 | BUG_ON(ocfs2_user_plugin.sp_proto == NULL); |
699 | 694 | ||
700 | ocfs2_user_plugin.sp_proto->lp_blocking_ast(astarg, level); | 695 | ocfs2_user_plugin.sp_proto->lp_blocking_ast(lksb, level); |
701 | } | 696 | } |
702 | 697 | ||
703 | static int user_dlm_lock(struct ocfs2_cluster_connection *conn, | 698 | static int user_dlm_lock(struct ocfs2_cluster_connection *conn, |
@@ -705,8 +700,7 @@ static int user_dlm_lock(struct ocfs2_cluster_connection *conn, | |||
705 | union ocfs2_dlm_lksb *lksb, | 700 | union ocfs2_dlm_lksb *lksb, |
706 | u32 flags, | 701 | u32 flags, |
707 | void *name, | 702 | void *name, |
708 | unsigned int namelen, | 703 | unsigned int namelen) |
709 | void *astarg) | ||
710 | { | 704 | { |
711 | int ret; | 705 | int ret; |
712 | 706 | ||
@@ -716,20 +710,19 @@ static int user_dlm_lock(struct ocfs2_cluster_connection *conn, | |||
716 | 710 | ||
717 | ret = dlm_lock(conn->cc_lockspace, mode, &lksb->lksb_fsdlm, | 711 | ret = dlm_lock(conn->cc_lockspace, mode, &lksb->lksb_fsdlm, |
718 | flags|DLM_LKF_NODLCKWT, name, namelen, 0, | 712 | flags|DLM_LKF_NODLCKWT, name, namelen, 0, |
719 | fsdlm_lock_ast_wrapper, astarg, | 713 | fsdlm_lock_ast_wrapper, lksb, |
720 | fsdlm_blocking_ast_wrapper); | 714 | fsdlm_blocking_ast_wrapper); |
721 | return ret; | 715 | return ret; |
722 | } | 716 | } |
723 | 717 | ||
724 | static int user_dlm_unlock(struct ocfs2_cluster_connection *conn, | 718 | static int user_dlm_unlock(struct ocfs2_cluster_connection *conn, |
725 | union ocfs2_dlm_lksb *lksb, | 719 | union ocfs2_dlm_lksb *lksb, |
726 | u32 flags, | 720 | u32 flags) |
727 | void *astarg) | ||
728 | { | 721 | { |
729 | int ret; | 722 | int ret; |
730 | 723 | ||
731 | ret = dlm_unlock(conn->cc_lockspace, lksb->lksb_fsdlm.sb_lkid, | 724 | ret = dlm_unlock(conn->cc_lockspace, lksb->lksb_fsdlm.sb_lkid, |
732 | flags, &lksb->lksb_fsdlm, astarg); | 725 | flags, &lksb->lksb_fsdlm, lksb); |
733 | return ret; | 726 | return ret; |
734 | } | 727 | } |
735 | 728 | ||
diff --git a/fs/ocfs2/stackglue.c b/fs/ocfs2/stackglue.c index f3df0baa9a48..3500d9839d76 100644 --- a/fs/ocfs2/stackglue.c +++ b/fs/ocfs2/stackglue.c | |||
@@ -233,35 +233,32 @@ EXPORT_SYMBOL_GPL(ocfs2_stack_glue_set_locking_protocol); | |||
233 | 233 | ||
234 | 234 | ||
235 | /* | 235 | /* |
236 | * The ocfs2_dlm_lock() and ocfs2_dlm_unlock() functions take | 236 | * The ocfs2_dlm_lock() and ocfs2_dlm_unlock() functions take no argument |
237 | * "struct ocfs2_lock_res *astarg" instead of "void *astarg" because the | 237 | * for the ast and bast functions. They will pass the lksb to the ast |
238 | * underlying stack plugins need to pilfer the lksb off of the lock_res. | 238 | * and bast. The caller can wrap the lksb with their own structure to |
239 | * If some other structure needs to be passed as an astarg, the plugins | 239 | * get more information. |
240 | * will need to be given a different avenue to the lksb. | ||
241 | */ | 240 | */ |
242 | int ocfs2_dlm_lock(struct ocfs2_cluster_connection *conn, | 241 | int ocfs2_dlm_lock(struct ocfs2_cluster_connection *conn, |
243 | int mode, | 242 | int mode, |
244 | union ocfs2_dlm_lksb *lksb, | 243 | union ocfs2_dlm_lksb *lksb, |
245 | u32 flags, | 244 | u32 flags, |
246 | void *name, | 245 | void *name, |
247 | unsigned int namelen, | 246 | unsigned int namelen) |
248 | struct ocfs2_lock_res *astarg) | ||
249 | { | 247 | { |
250 | BUG_ON(lproto == NULL); | 248 | BUG_ON(lproto == NULL); |
251 | 249 | ||
252 | return active_stack->sp_ops->dlm_lock(conn, mode, lksb, flags, | 250 | return active_stack->sp_ops->dlm_lock(conn, mode, lksb, flags, |
253 | name, namelen, astarg); | 251 | name, namelen); |
254 | } | 252 | } |
255 | EXPORT_SYMBOL_GPL(ocfs2_dlm_lock); | 253 | EXPORT_SYMBOL_GPL(ocfs2_dlm_lock); |
256 | 254 | ||
257 | int ocfs2_dlm_unlock(struct ocfs2_cluster_connection *conn, | 255 | int ocfs2_dlm_unlock(struct ocfs2_cluster_connection *conn, |
258 | union ocfs2_dlm_lksb *lksb, | 256 | union ocfs2_dlm_lksb *lksb, |
259 | u32 flags, | 257 | u32 flags) |
260 | struct ocfs2_lock_res *astarg) | ||
261 | { | 258 | { |
262 | BUG_ON(lproto == NULL); | 259 | BUG_ON(lproto == NULL); |
263 | 260 | ||
264 | return active_stack->sp_ops->dlm_unlock(conn, lksb, flags, astarg); | 261 | return active_stack->sp_ops->dlm_unlock(conn, lksb, flags); |
265 | } | 262 | } |
266 | EXPORT_SYMBOL_GPL(ocfs2_dlm_unlock); | 263 | EXPORT_SYMBOL_GPL(ocfs2_dlm_unlock); |
267 | 264 | ||
diff --git a/fs/ocfs2/stackglue.h b/fs/ocfs2/stackglue.h index 03a44d60eac9..d699117fb851 100644 --- a/fs/ocfs2/stackglue.h +++ b/fs/ocfs2/stackglue.h | |||
@@ -56,17 +56,6 @@ struct ocfs2_protocol_version { | |||
56 | }; | 56 | }; |
57 | 57 | ||
58 | /* | 58 | /* |
59 | * The ocfs2_locking_protocol defines the handlers called on ocfs2's behalf. | ||
60 | */ | ||
61 | struct ocfs2_locking_protocol { | ||
62 | struct ocfs2_protocol_version lp_max_version; | ||
63 | void (*lp_lock_ast)(void *astarg); | ||
64 | void (*lp_blocking_ast)(void *astarg, int level); | ||
65 | void (*lp_unlock_ast)(void *astarg, int error); | ||
66 | }; | ||
67 | |||
68 | |||
69 | /* | ||
70 | * The dlm_lockstatus struct includes lvb space, but the dlm_lksb struct only | 59 | * The dlm_lockstatus struct includes lvb space, but the dlm_lksb struct only |
71 | * has a pointer to separately allocated lvb space. This struct exists only to | 60 | * has a pointer to separately allocated lvb space. This struct exists only to |
72 | * include in the lksb union to make space for a combined dlm_lksb and lvb. | 61 | * include in the lksb union to make space for a combined dlm_lksb and lvb. |
@@ -88,6 +77,17 @@ union ocfs2_dlm_lksb { | |||
88 | }; | 77 | }; |
89 | 78 | ||
90 | /* | 79 | /* |
80 | * The ocfs2_locking_protocol defines the handlers called on ocfs2's behalf. | ||
81 | */ | ||
82 | struct ocfs2_locking_protocol { | ||
83 | struct ocfs2_protocol_version lp_max_version; | ||
84 | void (*lp_lock_ast)(union ocfs2_dlm_lksb *lksb); | ||
85 | void (*lp_blocking_ast)(union ocfs2_dlm_lksb *lksb, int level); | ||
86 | void (*lp_unlock_ast)(union ocfs2_dlm_lksb *lksb, int error); | ||
87 | }; | ||
88 | |||
89 | |||
90 | /* | ||
91 | * A cluster connection. Mostly opaque to ocfs2, the connection holds | 91 | * A cluster connection. Mostly opaque to ocfs2, the connection holds |
92 | * state for the underlying stack. ocfs2 does use cc_version to determine | 92 | * state for the underlying stack. ocfs2 does use cc_version to determine |
93 | * locking compatibility. | 93 | * locking compatibility. |
@@ -155,27 +155,29 @@ struct ocfs2_stack_operations { | |||
155 | * | 155 | * |
156 | * ast and bast functions are not part of the call because the | 156 | * ast and bast functions are not part of the call because the |
157 | * stack will likely want to wrap ast and bast calls before passing | 157 | * stack will likely want to wrap ast and bast calls before passing |
158 | * them to stack->sp_proto. | 158 | * them to stack->sp_proto. There is no astarg. The lksb will |
159 | * be passed back to the ast and bast functions. The caller can | ||
160 | * use this to find their object. | ||
159 | */ | 161 | */ |
160 | int (*dlm_lock)(struct ocfs2_cluster_connection *conn, | 162 | int (*dlm_lock)(struct ocfs2_cluster_connection *conn, |
161 | int mode, | 163 | int mode, |
162 | union ocfs2_dlm_lksb *lksb, | 164 | union ocfs2_dlm_lksb *lksb, |
163 | u32 flags, | 165 | u32 flags, |
164 | void *name, | 166 | void *name, |
165 | unsigned int namelen, | 167 | unsigned int namelen); |
166 | void *astarg); | ||
167 | 168 | ||
168 | /* | 169 | /* |
169 | * Call the underlying dlm unlock function. The ->dlm_unlock() | 170 | * Call the underlying dlm unlock function. The ->dlm_unlock() |
170 | * function should convert the flags as appropriate. | 171 | * function should convert the flags as appropriate. |
171 | * | 172 | * |
172 | * The unlock ast is not passed, as the stack will want to wrap | 173 | * The unlock ast is not passed, as the stack will want to wrap |
173 | * it before calling stack->sp_proto->lp_unlock_ast(). | 174 | * it before calling stack->sp_proto->lp_unlock_ast(). There is |
175 | * no astarg. The lksb will be passed back to the unlock ast | ||
176 | * function. The caller can use this to find their object. | ||
174 | */ | 177 | */ |
175 | int (*dlm_unlock)(struct ocfs2_cluster_connection *conn, | 178 | int (*dlm_unlock)(struct ocfs2_cluster_connection *conn, |
176 | union ocfs2_dlm_lksb *lksb, | 179 | union ocfs2_dlm_lksb *lksb, |
177 | u32 flags, | 180 | u32 flags); |
178 | void *astarg); | ||
179 | 181 | ||
180 | /* | 182 | /* |
181 | * Return the status of the current lock status block. The fs | 183 | * Return the status of the current lock status block. The fs |
@@ -249,12 +251,10 @@ int ocfs2_dlm_lock(struct ocfs2_cluster_connection *conn, | |||
249 | union ocfs2_dlm_lksb *lksb, | 251 | union ocfs2_dlm_lksb *lksb, |
250 | u32 flags, | 252 | u32 flags, |
251 | void *name, | 253 | void *name, |
252 | unsigned int namelen, | 254 | unsigned int namelen); |
253 | struct ocfs2_lock_res *astarg); | ||
254 | int ocfs2_dlm_unlock(struct ocfs2_cluster_connection *conn, | 255 | int ocfs2_dlm_unlock(struct ocfs2_cluster_connection *conn, |
255 | union ocfs2_dlm_lksb *lksb, | 256 | union ocfs2_dlm_lksb *lksb, |
256 | u32 flags, | 257 | u32 flags); |
257 | struct ocfs2_lock_res *astarg); | ||
258 | 258 | ||
259 | int ocfs2_dlm_lock_status(union ocfs2_dlm_lksb *lksb); | 259 | int ocfs2_dlm_lock_status(union ocfs2_dlm_lksb *lksb); |
260 | int ocfs2_dlm_lvb_valid(union ocfs2_dlm_lksb *lksb); | 260 | int ocfs2_dlm_lvb_valid(union ocfs2_dlm_lksb *lksb); |