aboutsummaryrefslogtreecommitdiffstats
path: root/fs/ocfs2/stack_user.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/ocfs2/stack_user.c')
-rw-r--r--fs/ocfs2/stack_user.c29
1 files changed, 11 insertions, 18 deletions
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
667static 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
673static void fsdlm_lock_ast_wrapper(void *astarg) 666static 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
696static void fsdlm_blocking_ast_wrapper(void *astarg, int level) 689static 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
703static int user_dlm_lock(struct ocfs2_cluster_connection *conn, 698static 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
724static int user_dlm_unlock(struct ocfs2_cluster_connection *conn, 718static 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