diff options
author | Bob Peterson <rpeterso@redhat.com> | 2014-03-07 02:19:15 +0400 |
---|---|---|
committer | Steven Whitehouse <swhiteho@redhat.com> | 2014-03-07 13:14:48 +0400 |
commit | a17d758b661d6fa01a0d466d7bdda3c131bb68f9 (patch) | |
tree | 974c88f31959ab2f54483542c1b96e1fc257612b /fs/gfs2/recovery.h | |
parent | fc554ed3d89d220b9d0c020e19aa52fb6bf1d673 (diff) | |
download | linux-a17d758b661d6fa01a0d466d7bdda3c131bb68f9.tar.xz |
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.h | 6 |
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); |