mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-06 09:56:25 -04:00
staging: lustre: ldlm: reconstruct proper flags on enqueue resend
otherwise, waiting lock may get granted as no BLOCKED_GRANTED flag is returned Signed-off-by: Vitaly Fertman <vitaly_fertman@xyratex.com> Xyratex-bug-id: MRP-1944 Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-5496 Reviewed-on: http://review.whamcloud.com/11644 Reviewed-by: James Simmons <uja.ornl@gmail.com> Reviewed-by: Oleg Drokin <oleg.drokin@intel.com> Signed-off-by: James Simmons <jsimmons@infradead.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
e9792be1e4
commit
f06d65a158
@@ -470,8 +470,7 @@ ldlm_flock_completion_ast(struct ldlm_lock *lock, __u64 flags, void *data)
|
||||
if (flags & LDLM_FL_FAILED)
|
||||
goto granted;
|
||||
|
||||
if (!(flags & (LDLM_FL_BLOCK_WAIT | LDLM_FL_BLOCK_GRANTED |
|
||||
LDLM_FL_BLOCK_CONV))) {
|
||||
if (!(flags & LDLM_FL_BLOCKED_MASK)) {
|
||||
if (!data)
|
||||
/* mds granted the lock in the reply */
|
||||
goto granted;
|
||||
|
||||
@@ -1549,8 +1549,7 @@ enum ldlm_error ldlm_lock_enqueue(struct ldlm_namespace *ns,
|
||||
* before we got a chance to actually enqueue it. We don't
|
||||
* need to do anything else.
|
||||
*/
|
||||
*flags &= ~(LDLM_FL_BLOCK_GRANTED |
|
||||
LDLM_FL_BLOCK_CONV | LDLM_FL_BLOCK_WAIT);
|
||||
*flags &= ~LDLM_FL_BLOCKED_MASK;
|
||||
goto out;
|
||||
}
|
||||
|
||||
|
||||
@@ -177,8 +177,7 @@ int ldlm_completion_ast_async(struct ldlm_lock *lock, __u64 flags, void *data)
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!(flags & (LDLM_FL_BLOCK_WAIT | LDLM_FL_BLOCK_GRANTED |
|
||||
LDLM_FL_BLOCK_CONV))) {
|
||||
if (!(flags & LDLM_FL_BLOCKED_MASK)) {
|
||||
wake_up(&lock->l_waitq);
|
||||
return ldlm_completion_tail(lock);
|
||||
}
|
||||
@@ -224,8 +223,7 @@ int ldlm_completion_ast(struct ldlm_lock *lock, __u64 flags, void *data)
|
||||
goto noreproc;
|
||||
}
|
||||
|
||||
if (!(flags & (LDLM_FL_BLOCK_WAIT | LDLM_FL_BLOCK_GRANTED |
|
||||
LDLM_FL_BLOCK_CONV))) {
|
||||
if (!(flags & LDLM_FL_BLOCKED_MASK)) {
|
||||
wake_up(&lock->l_waitq);
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user