Skip to content

Commit

Permalink
GFS2: Fix spectator umount issue
Browse files Browse the repository at this point in the history
The tests further down the recovery function relating to
unlocking the journal need to be updated to match the
intial test. Also, a test in the umount code which was
surplus to requirements has been removed. Umounting
spectator mounts now works correctly, as expected.

Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
  • Loading branch information
Steven Whitehouse committed Sep 29, 2010
1 parent d594845 commit c741c45
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 7 deletions.
2 changes: 1 addition & 1 deletion fs/gfs2/glock.c
Original file line number Diff line number Diff line change
Expand Up @@ -1517,7 +1517,7 @@ static void clear_glock(struct gfs2_glock *gl)
spin_unlock(&lru_lock);

spin_lock(&gl->gl_spin);
if (find_first_holder(gl) == NULL && gl->gl_state != LM_ST_UNLOCKED)
if (gl->gl_state != LM_ST_UNLOCKED)
handle_callback(gl, LM_ST_UNLOCKED, 0);
spin_unlock(&gl->gl_spin);
gfs2_glock_hold(gl);
Expand Down
12 changes: 6 additions & 6 deletions fs/gfs2/recovery.c
Original file line number Diff line number Diff line change
Expand Up @@ -455,12 +455,13 @@ void gfs2_recover_func(struct work_struct *work)
int ro = 0;
unsigned int pass;
int error;
int jlocked = 0;

if (sdp->sd_args.ar_spectator ||
(jd->jd_jid != sdp->sd_lockstruct.ls_jid)) {
fs_info(sdp, "jid=%u: Trying to acquire journal lock...\n",
jd->jd_jid);

jlocked = 1;
/* Acquire the journal lock so we can do recovery */

error = gfs2_glock_nq_num(sdp, jd->jd_jid, &gfs2_journal_glops,
Expand Down Expand Up @@ -555,21 +556,20 @@ void gfs2_recover_func(struct work_struct *work)
jd->jd_jid, t);
}

if (jd->jd_jid != sdp->sd_lockstruct.ls_jid)
gfs2_glock_dq_uninit(&ji_gh);

gfs2_recovery_done(sdp, jd->jd_jid, LM_RD_SUCCESS);

if (jd->jd_jid != sdp->sd_lockstruct.ls_jid)
if (jlocked) {
gfs2_glock_dq_uninit(&ji_gh);
gfs2_glock_dq_uninit(&j_gh);
}

fs_info(sdp, "jid=%u: Done\n", jd->jd_jid);
goto done;

fail_gunlock_tr:
gfs2_glock_dq_uninit(&t_gh);
fail_gunlock_ji:
if (jd->jd_jid != sdp->sd_lockstruct.ls_jid) {
if (jlocked) {
gfs2_glock_dq_uninit(&ji_gh);
fail_gunlock_j:
gfs2_glock_dq_uninit(&j_gh);
Expand Down

0 comments on commit c741c45

Please sign in to comment.