diff options
author | David Teigland <teigland@redhat.com> | 2012-01-10 00:29:20 +0400 |
---|---|---|
committer | Steven Whitehouse <swhiteho@redhat.com> | 2012-01-11 13:24:48 +0400 |
commit | 376d37788b56bc2800e5bd56b7a36b3544d89f97 (patch) | |
tree | ff0a261e5b6ad1dbec0cef25959700ba7b9a9ef3 /fs/gfs2 | |
parent | e8ca5cc571a60339491f8c273a01093096ff8704 (diff) | |
download | linux-376d37788b56bc2800e5bd56b7a36b3544d89f97.tar.xz |
GFS2: fail mount if journal recovery fails
If the first mounter fails to recover one of the journals
during mount, the mount should fail.
Signed-off-by: David Teigland <teigland@redhat.com>
Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
Diffstat (limited to 'fs/gfs2')
-rw-r--r-- | fs/gfs2/incore.h | 1 | ||||
-rw-r--r-- | fs/gfs2/recovery.c | 3 |
2 files changed, 3 insertions, 1 deletions
diff --git a/fs/gfs2/incore.h b/fs/gfs2/incore.h index e5701c70f6fb..97742a7ea9cc 100644 --- a/fs/gfs2/incore.h +++ b/fs/gfs2/incore.h @@ -429,6 +429,7 @@ struct gfs2_jdesc { #define JDF_RECOVERY 1 unsigned int jd_jid; unsigned int jd_blocks; + int jd_recover_error; }; struct gfs2_statfs_change_host { diff --git a/fs/gfs2/recovery.c b/fs/gfs2/recovery.c index 80701d1566a1..963b2d75200c 100644 --- a/fs/gfs2/recovery.c +++ b/fs/gfs2/recovery.c @@ -583,6 +583,7 @@ fail_gunlock_j: fs_info(sdp, "jid=%u: %s\n", jd->jd_jid, (error) ? "Failed" : "Done"); fail: + jd->jd_recover_error = error; gfs2_recovery_done(sdp, jd->jd_jid, LM_RD_GAVEUP); done: clear_bit(JDF_RECOVERY, &jd->jd_flags); @@ -611,6 +612,6 @@ int gfs2_recover_journal(struct gfs2_jdesc *jd, bool wait) wait_on_bit(&jd->jd_flags, JDF_RECOVERY, gfs2_recovery_wait, TASK_UNINTERRUPTIBLE); - return 0; + return wait ? jd->jd_recover_error : 0; } |