summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--fs/dlm/ast.c1
-rw-r--r--fs/dlm/dlm_internal.h2
-rw-r--r--fs/dlm/lock.c9
3 files changed, 7 insertions, 5 deletions
diff --git a/fs/dlm/ast.c b/fs/dlm/ast.c
index a211330cbc42..f91d39cb1e0b 100644
--- a/fs/dlm/ast.c
+++ b/fs/dlm/ast.c
@@ -38,6 +38,7 @@ void dlm_add_ast(struct dlm_lkb *lkb, int type)
dlm_user_add_ast(lkb, type);
return;
}
+ DLM_ASSERT(lkb->lkb_astaddr != DLM_FAKE_USER_AST, dlm_print_lkb(lkb););
spin_lock(&ast_queue_lock);
if (!(lkb->lkb_ast_type & (AST_COMP | AST_BAST))) {
diff --git a/fs/dlm/dlm_internal.h b/fs/dlm/dlm_internal.h
index da7509986699..1e5cd67e1b7a 100644
--- a/fs/dlm/dlm_internal.h
+++ b/fs/dlm/dlm_internal.h
@@ -91,6 +91,8 @@ struct dlm_mhandle;
} \
}
+#define DLM_FAKE_USER_AST ERR_PTR(-EINVAL)
+
struct dlm_direntry {
struct list_head list;
diff --git a/fs/dlm/lock.c b/fs/dlm/lock.c
index 6dcd475826c1..67247f0b508a 100644
--- a/fs/dlm/lock.c
+++ b/fs/dlm/lock.c
@@ -86,8 +86,6 @@ static void __receive_convert_reply(struct dlm_rsb *r, struct dlm_lkb *lkb,
struct dlm_message *ms);
static int receive_extralen(struct dlm_message *ms);
-#define FAKE_USER_AST (void*)0xff00ff00
-
/*
* Lock compatibilty matrix - thanks Steve
* UN = Unlocked state. Not really a state, used as a flag
@@ -2195,6 +2193,7 @@ static int send_convert(struct dlm_rsb *r, struct dlm_lkb *lkb)
if (!error && down_conversion(lkb)) {
remove_from_waiters(lkb);
r->res_ls->ls_stub_ms.m_result = 0;
+ r->res_ls->ls_stub_ms.m_flags = lkb->lkb_flags;
__receive_convert_reply(r, lkb, &r->res_ls->ls_stub_ms);
}
@@ -3615,7 +3614,7 @@ int dlm_user_request(struct dlm_ls *ls, struct dlm_user_args *ua,
lock and that lkb_astparam is the dlm_user_args structure. */
error = set_lock_args(mode, &ua->lksb, flags, namelen, parent_lkid,
- FAKE_USER_AST, ua, FAKE_USER_AST, &args);
+ DLM_FAKE_USER_AST, ua, DLM_FAKE_USER_AST, &args);
lkb->lkb_flags |= DLM_IFL_USER;
ua->old_mode = DLM_LOCK_IV;
@@ -3686,8 +3685,8 @@ int dlm_user_convert(struct dlm_ls *ls, struct dlm_user_args *ua_tmp,
ua->user_lksb = ua_tmp->user_lksb;
ua->old_mode = lkb->lkb_grmode;
- error = set_lock_args(mode, &ua->lksb, flags, 0, 0, FAKE_USER_AST, ua,
- FAKE_USER_AST, &args);
+ error = set_lock_args(mode, &ua->lksb, flags, 0, 0, DLM_FAKE_USER_AST,
+ ua, DLM_FAKE_USER_AST, &args);
if (error)
goto out_put;