* [Ocfs2-devel] [PATCH] ocfs2/dlm: Wait on lockres instead of erroring cancel requests
@ 2009-08-20 18:43 Goldwyn Rodrigues
2009-08-21 0:35 ` Sunil Mushran
2009-08-21 1:49 ` Joel Becker
0 siblings, 2 replies; 3+ messages in thread
From: Goldwyn Rodrigues @ 2009-08-20 18:43 UTC (permalink / raw)
To: ocfs2-devel
In case a downconvert is queued, and a flock receives a signal,
BUG_ON(lockres->l_action != OCFS2_AST_INVALID) is triggered
because a lock cancel triggers a dlmunlock while an AST is
scheduled.
To avoid this, allow a LKM_CANCEL to pass through, and let it
wait on __dlm_wait_on_lockres().
Signed-off-by: Goldwyn Rodrigues <rgoldwyn@suse.de>
Signed-off-by: Mark Fasheh <mfasheh@suse.com>
---
diff --git a/fs/ocfs2/dlm/dlmunlock.c b/fs/ocfs2/dlm/dlmunlock.c
index fcf879e..756f5b0 100644
--- a/fs/ocfs2/dlm/dlmunlock.c
+++ b/fs/ocfs2/dlm/dlmunlock.c
@@ -122,7 +122,7 @@ static enum dlm_status dlmunlock_common(struct
dlm_ctxt *dlm,
* that still has AST's pending... */
in_use = !list_empty(&lock->ast_list);
spin_unlock(&dlm->ast_lock);
- if (in_use) {
+ if (in_use && !(flags & LKM_CANCEL)) {
mlog(ML_ERROR, "lockres %.*s: Someone is calling dlmunlock "
"while waiting for an ast!", res->lockname.len,
res->lockname.name);
@@ -131,7 +131,7 @@ static enum dlm_status dlmunlock_common(struct
dlm_ctxt *dlm,
spin_lock(&res->spinlock);
if (res->state & DLM_LOCK_RES_IN_PROGRESS) {
- if (master_node) {
+ if (master_node && !(flags & LKM_CANCEL)) {
mlog(ML_ERROR, "lockres in progress!\n");
spin_unlock(&res->spinlock);
return DLM_FORWARD;
^ permalink raw reply related [flat|nested] 3+ messages in thread* [Ocfs2-devel] [PATCH] ocfs2/dlm: Wait on lockres instead of erroring cancel requests
2009-08-20 18:43 [Ocfs2-devel] [PATCH] ocfs2/dlm: Wait on lockres instead of erroring cancel requests Goldwyn Rodrigues
@ 2009-08-21 0:35 ` Sunil Mushran
2009-08-21 1:49 ` Joel Becker
1 sibling, 0 replies; 3+ messages in thread
From: Sunil Mushran @ 2009-08-21 0:35 UTC (permalink / raw)
To: ocfs2-devel
Signed-off-by: Sunil Mushran <sunil.mushran@oracle.com>
Goldwyn Rodrigues wrote:
> In case a downconvert is queued, and a flock receives a signal,
> BUG_ON(lockres->l_action != OCFS2_AST_INVALID) is triggered
> because a lock cancel triggers a dlmunlock while an AST is
> scheduled.
>
> To avoid this, allow a LKM_CANCEL to pass through, and let it
> wait on __dlm_wait_on_lockres().
>
> Signed-off-by: Goldwyn Rodrigues <rgoldwyn@suse.de>
> Signed-off-by: Mark Fasheh <mfasheh@suse.com>
> ---
> diff --git a/fs/ocfs2/dlm/dlmunlock.c b/fs/ocfs2/dlm/dlmunlock.c
> index fcf879e..756f5b0 100644
> --- a/fs/ocfs2/dlm/dlmunlock.c
> +++ b/fs/ocfs2/dlm/dlmunlock.c
> @@ -122,7 +122,7 @@ static enum dlm_status dlmunlock_common(struct
> dlm_ctxt *dlm,
> * that still has AST's pending... */
> in_use = !list_empty(&lock->ast_list);
> spin_unlock(&dlm->ast_lock);
> - if (in_use) {
> + if (in_use && !(flags & LKM_CANCEL)) {
> mlog(ML_ERROR, "lockres %.*s: Someone is calling dlmunlock "
> "while waiting for an ast!", res->lockname.len,
> res->lockname.name);
> @@ -131,7 +131,7 @@ static enum dlm_status dlmunlock_common(struct
> dlm_ctxt *dlm,
>
> spin_lock(&res->spinlock);
> if (res->state & DLM_LOCK_RES_IN_PROGRESS) {
> - if (master_node) {
> + if (master_node && !(flags & LKM_CANCEL)) {
> mlog(ML_ERROR, "lockres in progress!\n");
> spin_unlock(&res->spinlock);
> return DLM_FORWARD;
>
> _______________________________________________
> Ocfs2-devel mailing list
> Ocfs2-devel at oss.oracle.com
> http://oss.oracle.com/mailman/listinfo/ocfs2-devel
>
^ permalink raw reply [flat|nested] 3+ messages in thread* [Ocfs2-devel] [PATCH] ocfs2/dlm: Wait on lockres instead of erroring cancel requests
2009-08-20 18:43 [Ocfs2-devel] [PATCH] ocfs2/dlm: Wait on lockres instead of erroring cancel requests Goldwyn Rodrigues
2009-08-21 0:35 ` Sunil Mushran
@ 2009-08-21 1:49 ` Joel Becker
1 sibling, 0 replies; 3+ messages in thread
From: Joel Becker @ 2009-08-21 1:49 UTC (permalink / raw)
To: ocfs2-devel
On Thu, Aug 20, 2009 at 01:43:19PM -0500, Goldwyn Rodrigues wrote:
> In case a downconvert is queued, and a flock receives a signal,
> BUG_ON(lockres->l_action != OCFS2_AST_INVALID) is triggered
> because a lock cancel triggers a dlmunlock while an AST is
> scheduled.
>
> To avoid this, allow a LKM_CANCEL to pass through, and let it
> wait on __dlm_wait_on_lockres().
>
> Signed-off-by: Goldwyn Rodrigues <rgoldwyn@suse.de>
> Signed-off-by: Mark Fasheh <mfasheh@suse.com>
This patch is now part of the fixes branch of ocfs2.git.
Joel
--
"Friends may come and go, but enemies accumulate."
- Thomas Jones
Joel Becker
Principal Software Developer
Oracle
E-mail: joel.becker at oracle.com
Phone: (650) 506-8127
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2009-08-21 1:49 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-08-20 18:43 [Ocfs2-devel] [PATCH] ocfs2/dlm: Wait on lockres instead of erroring cancel requests Goldwyn Rodrigues
2009-08-21 0:35 ` Sunil Mushran
2009-08-21 1:49 ` Joel Becker
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.