Linux Archive

Linux Archive (http://www.linux-archive.org/)
-   Cluster Development (http://www.linux-archive.org/cluster-development/)
-   -   gfs2: fail mount if journal recovery fails (http://www.linux-archive.org/cluster-development/619124-gfs2-fail-mount-if-journal-recovery-fails.html)

David Teigland 01-09-2012 07:29 PM

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>
---
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
", 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

Steven Whitehouse 01-10-2012 08:48 AM

gfs2: fail mount if journal recovery fails
 
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
", 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;
> }
>


All times are GMT. The time now is 05:42 AM.

VBulletin, Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.