[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