cluster-devel.redhat.com archive mirror
 help / color / mirror / Atom feed
* [Cluster-devel] gfs2: fail mount if journal recovery fails
@ 2012-01-09 20:29 David Teigland
  2012-01-10  9:48 ` Steven Whitehouse
  0 siblings, 1 reply; 2+ messages in thread
From: David Teigland @ 2012-01-09 20:29 UTC (permalink / raw)
  To: cluster-devel.redhat.com

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>
---
 fs/gfs2/incore.h   |    1 +
 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 59114c5..ad2d05e 100644
--- a/fs/gfs2/incore.h
+++ b/fs/gfs2/incore.h
@@ -434,6 +434,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 80701d1..963b2d7 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;
 }
 
-- 
1.7.6



^ permalink raw reply related	[flat|nested] 2+ messages in thread

* [Cluster-devel] gfs2: fail mount if journal recovery fails
  2012-01-09 20:29 [Cluster-devel] gfs2: fail mount if journal recovery fails David Teigland
@ 2012-01-10  9:48 ` Steven Whitehouse
  0 siblings, 0 replies; 2+ messages in thread
From: Steven Whitehouse @ 2012-01-10  9:48 UTC (permalink / raw)
  To: cluster-devel.redhat.com

Hi,

Both patches look good and I've pushed them to the -fixes tree for now,

Steve.

On Mon, 2012-01-09 at 15:29 -0500, David Teigland wrote:
> 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>
> ---
>  fs/gfs2/incore.h   |    1 +
>  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 59114c5..ad2d05e 100644
> --- a/fs/gfs2/incore.h
> +++ b/fs/gfs2/incore.h
> @@ -434,6 +434,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 80701d1..963b2d7 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;
>  }
>  




^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2012-01-10  9:48 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-01-09 20:29 [Cluster-devel] gfs2: fail mount if journal recovery fails David Teigland
2012-01-10  9:48 ` Steven Whitehouse

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).