projects
/
powerpc.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
ocfs2_dlm: wake up sleepers on the lockres waitqueue
[powerpc.git]
/
fs
/
ocfs2
/
dlm
/
dlmconvert.c
diff --git
a/fs/ocfs2/dlm/dlmconvert.c
b/fs/ocfs2/dlm/dlmconvert.c
index
c764dc8
..
42c1774
100644
(file)
--- a/
fs/ocfs2/dlm/dlmconvert.c
+++ b/
fs/ocfs2/dlm/dlmconvert.c
@@
-428,7
+428,7
@@
int dlm_convert_lock_handler(struct o2net_msg *msg, u32 len, void *data)
struct dlm_lockstatus *lksb;
enum dlm_status status = DLM_NORMAL;
u32 flags;
struct dlm_lockstatus *lksb;
enum dlm_status status = DLM_NORMAL;
u32 flags;
- int call_ast = 0, kick_thread = 0, ast_reserved = 0;
+ int call_ast = 0, kick_thread = 0, ast_reserved = 0
, wake = 0
;
if (!dlm_grab(dlm)) {
dlm_error(DLM_REJECTED);
if (!dlm_grab(dlm)) {
dlm_error(DLM_REJECTED);
@@
-524,8
+524,11
@@
int dlm_convert_lock_handler(struct o2net_msg *msg, u32 len, void *data)
cnv->requested_type,
&call_ast, &kick_thread);
res->state &= ~DLM_LOCK_RES_IN_PROGRESS;
cnv->requested_type,
&call_ast, &kick_thread);
res->state &= ~DLM_LOCK_RES_IN_PROGRESS;
+ wake = 1;
}
spin_unlock(&res->spinlock);
}
spin_unlock(&res->spinlock);
+ if (wake)
+ wake_up(&res->wq);
if (status != DLM_NORMAL) {
if (status != DLM_NOTQUEUED)
if (status != DLM_NORMAL) {
if (status != DLM_NOTQUEUED)