[Cluster-devel] [GFS2 PATCH] GFS2: Allow glocks to be unlocked after withdraw

Andreas Gruenbacher <[email protected]>
Newsgroups com.redhat.cluster-devel
Message-ID <CAHc6FU5c2uNHFyUgVbSybB+FG=5ooJFq2d3Bn9520sN5gjzmBQ@mail.gmail.com>
Bob,

On Fri, May 5, 2017 at 4:59 PM, Bob Peterson <[email protected]> wrote:
> Hi,
>
> Before this patch, glocks could not be unlocked after a withdraw,
> but that resulted in hangs during unmount. This patch allows GFS2
> function do_xmote to demote locks to an unlocked state, but not
> promoting any upward.

the commit message should point out that this relates to commit 0d1c7ae9d8 which
currently is on for-next, so it fixes a regression and should probably end up in
this cycle as well.

> Signed-off-by: Bob Peterson <[email protected]>
> ---
> diff --git a/fs/gfs2/glock.c b/fs/gfs2/glock.c
> index 9e81219..959a19c 100644
> --- a/fs/gfs2/glock.c
> +++ b/fs/gfs2/glock.c
> @@ -449,7 +449,8 @@ __acquires(&gl->gl_lockref.lock)
>         unsigned int lck_flags = (unsigned int)(gh ? gh->gh_flags : 0);
>         int ret;
>
> -       if (unlikely(test_bit(SDF_SHUTDOWN, &sdp->sd_flags)))
> +       if (unlikely(test_bit(SDF_SHUTDOWN, &sdp->sd_flags)) &&
> +           target != LM_ST_UNLOCKED)
>                 return;
>         lck_flags &= (LM_FLAG_TRY | LM_FLAG_TRY_1CB | LM_FLAG_NOEXP |
>                       LM_FLAG_PRIORITY);
> @@ -486,7 +487,8 @@ __acquires(&gl->gl_lockref.lock)
>                 }
>                 else if (ret) {
>                         pr_err("lm_lock ret %d\n", ret);
> -                       GLOCK_BUG_ON(gl, 1);
> +                       GLOCK_BUG_ON(gl, !test_bit(SDF_SHUTDOWN,
> +                                                  &sdp->sd_flags));
>                 }
>         } else { /* lock_nolock */
>                 finish_xmote(gl, target);

Thanks,
Andreas
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.