diff options
author | Steven Whitehouse <swhiteho@redhat.com> | 2010-07-29 09:39:29 -0400 |
---|---|---|
committer | Steven Whitehouse <swhiteho@redhat.com> | 2010-07-29 09:39:29 -0400 |
commit | 7cdee5dbf477409e4afc6c9063492dc2577b41ea (patch) | |
tree | cfa14683839870e542666cc3630dcb900e11ef01 /fs/gfs2/glock.c | |
parent | d5341a92416706808dc5cd847826f28c08063c8c (diff) |
Revert "GFS2: recovery stuck on transaction lock"
This reverts commit b7dc2df5725fe7355fd76000ead7e39728e1b8a9.
The initial patch didn't quite work since it doesn't cover all
the possible routes by which the GLF_FROZEN flag might be set.
A revised fix is coming up in the next patch.
Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
Diffstat (limited to 'fs/gfs2/glock.c')
-rw-r--r-- | fs/gfs2/glock.c | 10 |
1 files changed, 0 insertions, 10 deletions
diff --git a/fs/gfs2/glock.c b/fs/gfs2/glock.c index 717531d1b2a8..2b3d8f8a8393 100644 --- a/fs/gfs2/glock.c +++ b/fs/gfs2/glock.c | |||
@@ -707,18 +707,8 @@ static void glock_work_func(struct work_struct *work) | |||
707 | { | 707 | { |
708 | unsigned long delay = 0; | 708 | unsigned long delay = 0; |
709 | struct gfs2_glock *gl = container_of(work, struct gfs2_glock, gl_work.work); | 709 | struct gfs2_glock *gl = container_of(work, struct gfs2_glock, gl_work.work); |
710 | struct gfs2_holder *gh; | ||
711 | int drop_ref = 0; | 710 | int drop_ref = 0; |
712 | 711 | ||
713 | if (unlikely(test_bit(GLF_FROZEN, &gl->gl_flags))) { | ||
714 | spin_lock(&gl->gl_spin); | ||
715 | gh = find_first_waiter(gl); | ||
716 | if (gh && (gh->gh_flags & LM_FLAG_NOEXP) && | ||
717 | test_and_clear_bit(GLF_FROZEN, &gl->gl_flags)) | ||
718 | set_bit(GLF_REPLY_PENDING, &gl->gl_flags); | ||
719 | spin_unlock(&gl->gl_spin); | ||
720 | } | ||
721 | |||
722 | if (test_and_clear_bit(GLF_REPLY_PENDING, &gl->gl_flags)) { | 712 | if (test_and_clear_bit(GLF_REPLY_PENDING, &gl->gl_flags)) { |
723 | finish_xmote(gl, gl->gl_reply); | 713 | finish_xmote(gl, gl->gl_reply); |
724 | drop_ref = 1; | 714 | drop_ref = 1; |