diff options
author | Joel Becker <joel.becker@oracle.com> | 2010-01-29 18:46:23 -0500 |
---|---|---|
committer | Joel Becker <joel.becker@oracle.com> | 2010-02-26 18:41:16 -0500 |
commit | 110946c8fb23c1e1e23312afed0977ad4aa37c95 (patch) | |
tree | a71cc2b0f7819d80426ed0a445f42d4558df99fb /fs/ocfs2/stack_user.c | |
parent | c0e4133851ed94c73ee3d34a2f2a245fcd0a60a1 (diff) |
ocfs2: Hang the locking proto on the cluster conn and use it in asts.
With the ocfs2_cluster_connection hanging off of the ocfs2_dlm_lksb, we
have access to it in the ast and bast wrapper functions. Attach the
ocfs2_locking_protocol to the conn.
Now, instead of refering to a static variable for ast/bast pointers, the
wrappers can look at the connection. This means different connections
can have different ast/bast pointers, and it reduces the need for the
static pointer.
Signed-off-by: Joel Becker <joel.becker@oracle.com>
Diffstat (limited to 'fs/ocfs2/stack_user.c')
-rw-r--r-- | fs/ocfs2/stack_user.c | 10 |
1 files changed, 3 insertions, 7 deletions
diff --git a/fs/ocfs2/stack_user.c b/fs/ocfs2/stack_user.c index 31276bac78f5..b4cf616ef423 100644 --- a/fs/ocfs2/stack_user.c +++ b/fs/ocfs2/stack_user.c | |||
@@ -668,8 +668,6 @@ static void fsdlm_lock_ast_wrapper(void *astarg) | |||
668 | struct ocfs2_dlm_lksb *lksb = astarg; | 668 | struct ocfs2_dlm_lksb *lksb = astarg; |
669 | int status = lksb->lksb_fsdlm.sb_status; | 669 | int status = lksb->lksb_fsdlm.sb_status; |
670 | 670 | ||
671 | BUG_ON(ocfs2_user_plugin.sp_proto == NULL); | ||
672 | |||
673 | /* | 671 | /* |
674 | * For now we're punting on the issue of other non-standard errors | 672 | * For now we're punting on the issue of other non-standard errors |
675 | * where we can't tell if the unlock_ast or lock_ast should be called. | 673 | * where we can't tell if the unlock_ast or lock_ast should be called. |
@@ -681,18 +679,16 @@ static void fsdlm_lock_ast_wrapper(void *astarg) | |||
681 | */ | 679 | */ |
682 | 680 | ||
683 | if (status == -DLM_EUNLOCK || status == -DLM_ECANCEL) | 681 | if (status == -DLM_EUNLOCK || status == -DLM_ECANCEL) |
684 | ocfs2_user_plugin.sp_proto->lp_unlock_ast(lksb, 0); | 682 | lksb->lksb_conn->cc_proto->lp_unlock_ast(lksb, 0); |
685 | else | 683 | else |
686 | ocfs2_user_plugin.sp_proto->lp_lock_ast(lksb); | 684 | lksb->lksb_conn->cc_proto->lp_lock_ast(lksb); |
687 | } | 685 | } |
688 | 686 | ||
689 | static void fsdlm_blocking_ast_wrapper(void *astarg, int level) | 687 | static void fsdlm_blocking_ast_wrapper(void *astarg, int level) |
690 | { | 688 | { |
691 | struct ocfs2_dlm_lksb *lksb = astarg; | 689 | struct ocfs2_dlm_lksb *lksb = astarg; |
692 | 690 | ||
693 | BUG_ON(ocfs2_user_plugin.sp_proto == NULL); | 691 | lksb->lksb_conn->cc_proto->lp_blocking_ast(lksb, level); |
694 | |||
695 | ocfs2_user_plugin.sp_proto->lp_blocking_ast(lksb, level); | ||
696 | } | 692 | } |
697 | 693 | ||
698 | static int user_dlm_lock(struct ocfs2_cluster_connection *conn, | 694 | static int user_dlm_lock(struct ocfs2_cluster_connection *conn, |