aboutsummaryrefslogtreecommitdiffstats
path: root/fs/gfs2/recovery.c
diff options
context:
space:
mode:
authorSteven Whitehouse <swhiteho@redhat.com>2010-09-29 09:20:52 -0400
committerSteven Whitehouse <swhiteho@redhat.com>2010-09-29 09:20:52 -0400
commitc741c4551237f9c1bdcd3b1b39b0883bd19a3723 (patch)
treef3d39633f5e63ad40dd5a7375090b239bde3368c /fs/gfs2/recovery.c
parentd594845106f34c079a6b05be01a37e4883c3bf4c (diff)
GFS2: Fix spectator umount issue
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>
Diffstat (limited to 'fs/gfs2/recovery.c')
-rw-r--r--fs/gfs2/recovery.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/fs/gfs2/recovery.c b/fs/gfs2/recovery.c
index 666548e14596..f2a02edcac8f 100644
--- a/fs/gfs2/recovery.c
+++ b/fs/gfs2/recovery.c
@@ -455,12 +455,13 @@ void gfs2_recover_func(struct work_struct *work)
455 int ro = 0; 455 int ro = 0;
456 unsigned int pass; 456 unsigned int pass;
457 int error; 457 int error;
458 int jlocked = 0;
458 459
459 if (sdp->sd_args.ar_spectator || 460 if (sdp->sd_args.ar_spectator ||
460 (jd->jd_jid != sdp->sd_lockstruct.ls_jid)) { 461 (jd->jd_jid != sdp->sd_lockstruct.ls_jid)) {
461 fs_info(sdp, "jid=%u: Trying to acquire journal lock...\n", 462 fs_info(sdp, "jid=%u: Trying to acquire journal lock...\n",
462 jd->jd_jid); 463 jd->jd_jid);
463 464 jlocked = 1;
464 /* Acquire the journal lock so we can do recovery */ 465 /* Acquire the journal lock so we can do recovery */
465 466
466 error = gfs2_glock_nq_num(sdp, jd->jd_jid, &gfs2_journal_glops, 467 error = gfs2_glock_nq_num(sdp, jd->jd_jid, &gfs2_journal_glops,
@@ -555,13 +556,12 @@ void gfs2_recover_func(struct work_struct *work)
555 jd->jd_jid, t); 556 jd->jd_jid, t);
556 } 557 }
557 558
558 if (jd->jd_jid != sdp->sd_lockstruct.ls_jid)
559 gfs2_glock_dq_uninit(&ji_gh);
560
561 gfs2_recovery_done(sdp, jd->jd_jid, LM_RD_SUCCESS); 559 gfs2_recovery_done(sdp, jd->jd_jid, LM_RD_SUCCESS);
562 560
563 if (jd->jd_jid != sdp->sd_lockstruct.ls_jid) 561 if (jlocked) {
562 gfs2_glock_dq_uninit(&ji_gh);
564 gfs2_glock_dq_uninit(&j_gh); 563 gfs2_glock_dq_uninit(&j_gh);
564 }
565 565
566 fs_info(sdp, "jid=%u: Done\n", jd->jd_jid); 566 fs_info(sdp, "jid=%u: Done\n", jd->jd_jid);
567 goto done; 567 goto done;
@@ -569,7 +569,7 @@ void gfs2_recover_func(struct work_struct *work)
569fail_gunlock_tr: 569fail_gunlock_tr:
570 gfs2_glock_dq_uninit(&t_gh); 570 gfs2_glock_dq_uninit(&t_gh);
571fail_gunlock_ji: 571fail_gunlock_ji:
572 if (jd->jd_jid != sdp->sd_lockstruct.ls_jid) { 572 if (jlocked) {
573 gfs2_glock_dq_uninit(&ji_gh); 573 gfs2_glock_dq_uninit(&ji_gh);
574fail_gunlock_j: 574fail_gunlock_j:
575 gfs2_glock_dq_uninit(&j_gh); 575 gfs2_glock_dq_uninit(&j_gh);