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 | |
| 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>
| -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; |
