summaryrefslogtreecommitdiffstats
path: root/fs/gfs2/recovery.h
diff options
context:
space:
mode:
authorBob Peterson <rpeterso@redhat.com>2014-03-06 23:19:15 +0100
committerSteven Whitehouse <swhiteho@redhat.com>2014-03-07 10:14:48 +0100
commita17d758b661d6fa01a0d466d7bdda3c131bb68f9 (patch)
tree974c88f31959ab2f54483542c1b96e1fc257612b /fs/gfs2/recovery.h
parentGFS2: global conversion to pr_foo() (diff)
downloadlinux-a17d758b661d6fa01a0d466d7bdda3c131bb68f9.tar.xz
linux-a17d758b661d6fa01a0d466d7bdda3c131bb68f9.zip
GFS2: Move recovery variables to journal structure in memory
If multiple nodes fail and their recovery work runs simultaneously, they would use the same unprotected variables in the superblock. For example, they would stomp on each other's revoked blocks lists, which resulted in file system metadata corruption. This patch moves the necessary variables so that each journal has its own separate area for tracking its journal replay. Signed-off-by: Bob Peterson <rpeterso@redhat.com> Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
Diffstat (limited to 'fs/gfs2/recovery.h')
-rw-r--r--fs/gfs2/recovery.h6
1 files changed, 3 insertions, 3 deletions
diff --git a/fs/gfs2/recovery.h b/fs/gfs2/recovery.h
index 2226136c7647..6142836cce96 100644
--- a/fs/gfs2/recovery.h
+++ b/fs/gfs2/recovery.h
@@ -23,9 +23,9 @@ static inline void gfs2_replay_incr_blk(struct gfs2_sbd *sdp, unsigned int *blk)
extern int gfs2_replay_read_block(struct gfs2_jdesc *jd, unsigned int blk,
struct buffer_head **bh);
-extern int gfs2_revoke_add(struct gfs2_sbd *sdp, u64 blkno, unsigned int where);
-extern int gfs2_revoke_check(struct gfs2_sbd *sdp, u64 blkno, unsigned int where);
-extern void gfs2_revoke_clean(struct gfs2_sbd *sdp);
+extern int gfs2_revoke_add(struct gfs2_jdesc *jd, u64 blkno, unsigned int where);
+extern int gfs2_revoke_check(struct gfs2_jdesc *jd, u64 blkno, unsigned int where);
+extern void gfs2_revoke_clean(struct gfs2_jdesc *jd);
extern int gfs2_find_jhead(struct gfs2_jdesc *jd,
struct gfs2_log_header_host *head);