All of lore.kernel.org
 help / color / mirror / Atom feed
From: Steven Whitehouse <swhiteho@redhat.com>
To: cluster-devel.redhat.com
Subject: [Cluster-devel] [GFS2 PATCH] GFS2: Adjust lock reference count
Date: Wed, 12 Mar 2014 14:47:40 +0000	[thread overview]
Message-ID: <1394635660.2729.60.camel@menhir> (raw)
In-Reply-To: <1205189675.13171627.1394634740946.JavaMail.zimbra@redhat.com>

Hi,

On Wed, 2014-03-12 at 10:32 -0400, Bob Peterson wrote:
> Hi,
> 
> This patch closes a small timing window whereby a request to hold the
> transaction glock can get stuck. The problem is that after the DLM has
> granted the lock, it can get into a state whereby it doesn't transition
> the glock to a held state, due to not having requeued the glock state
> machine to finish the transition.
> 
> Steve: Feel free to adjust the patch description as you see fit.
> I'm not feeling very creative at the moment.
> 
> Regards,
> 
> Bob Peterson
> Red Hat File Systems
> 
I updated the description, and also converted the atomic_inc to lockref
- I guess that you didn't compile test this one. Anyway, that should
sort it out I think, so I've added it to the tree now, since we know
that the fix is needed,

Steve.

> Signed-off-by: Bob Peterson <rpeterso@redhat.com> 
> ---
>  fs/gfs2/glock.c | 8 ++++++--
>  1 file changed, 6 insertions(+), 2 deletions(-)
> 
> diff --git a/fs/gfs2/glock.c b/fs/gfs2/glock.c
> index 52f7478..67ac456 100644
> --- a/fs/gfs2/glock.c
> +++ b/fs/gfs2/glock.c
> @@ -1047,9 +1047,13 @@ int gfs2_glock_nq(struct gfs2_holder *gh)
>  
>  	spin_lock(&gl->gl_spin);
>  	add_to_queue(gh);
> -	if ((LM_FLAG_NOEXP & gh->gh_flags) &&
> -	    test_and_clear_bit(GLF_FROZEN, &gl->gl_flags))
> +	if (unlikely((LM_FLAG_NOEXP & gh->gh_flags) &&
> +		     test_and_clear_bit(GLF_FROZEN, &gl->gl_flags))) {
>  		set_bit(GLF_REPLY_PENDING, &gl->gl_flags);
> +		atomic_inc(&gl->gl_ref);
> +		if (queue_delayed_work(glock_workqueue, &gl->gl_work, 0) == 0)
> +			atomic_dec(&gl->gl_ref);
> +	}
>  	run_queue(gl, 1);
>  	spin_unlock(&gl->gl_spin);
>  
> 




      reply	other threads:[~2014-03-12 14:47 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <1359995163.13170063.1394634617177.JavaMail.zimbra@redhat.com>
2014-03-12 14:32 ` [Cluster-devel] [GFS2 PATCH] GFS2: Adjust lock reference count Bob Peterson
2014-03-12 14:47   ` Steven Whitehouse [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1394635660.2729.60.camel@menhir \
    --to=swhiteho@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.