cluster: RHEL510 - fsck.gfs2: Fix handling of eattr indirect blocks

Bob Peterson rpeterso at fedoraproject.org
Fri Apr 5 13:46:41 UTC 2013


Gitweb:        http://git.fedorahosted.org/git/?p=cluster.git;a=commitdiff;h=8687b393476d7b250da14e72121fd4f7f6b3737c
Commit:        8687b393476d7b250da14e72121fd4f7f6b3737c
Parent:        c77cd8fe7f7cd7b96106fde4ea6a411208f3a6e5
Author:        Andrew Price <anprice at redhat.com>
AuthorDate:    Fri Mar 23 17:15:37 2012 +0000
Committer:     Bob Peterson <rpeterso at redhat.com>
CommitterDate: Fri Apr 5 06:25:01 2013 -0700

fsck.gfs2: Fix handling of eattr indirect blocks

check_indirect_eattr() was using sizeof(struct gfs2_meta_header) as the offset
for indirect eattr blocks. This patch fixes it to use sizeof(struct
gfs_indirect) for gfs1 file systems.

rhbz#877150
---
 gfs2/fsck/metawalk.c |    7 +++----
 1 files changed, 3 insertions(+), 4 deletions(-)

diff --git a/gfs2/fsck/metawalk.c b/gfs2/fsck/metawalk.c
index 31ceca9..15e1b9f 100644
--- a/gfs2/fsck/metawalk.c
+++ b/gfs2/fsck/metawalk.c
@@ -957,6 +957,7 @@ static int check_indirect_eattr(struct gfs2_inode *ip, uint64_t indirect,
 	struct gfs2_sbd *sdp = ip->i_sbd;
 	int first_ea_is_bad = 0;
 	uint64_t di_eattr_save = ip->i_di.di_eattr;
+	uint64_t offset = ip->i_sbd->gfs1 ? sizeof(struct gfs_indirect) : sizeof(struct gfs2_meta_header);
 
 	log_debug( _("Checking EA indirect block #%"PRIu64" (0x%" PRIx64 ").\n"),
 			  indirect, indirect);
@@ -968,10 +969,8 @@ static int check_indirect_eattr(struct gfs2_inode *ip, uint64_t indirect,
 	if (!error) {
 		int leaf_pointers = 0, leaf_pointer_errors = 0;
 
-		ea_leaf_ptr = (uint64_t *)(indirect_buf->b_data
-					   + sizeof(struct gfs2_meta_header));
-		end = ea_leaf_ptr + ((sdp->sd_sb.sb_bsize
-				      - sizeof(struct gfs2_meta_header)) / 8);
+		ea_leaf_ptr = (uint64_t *)(indirect_buf->b_data + offset);
+		end = ea_leaf_ptr + ((sdp->sd_sb.sb_bsize - offset) / 8);
 
 		while (*ea_leaf_ptr && (ea_leaf_ptr < end)){
 			block = be64_to_cpu(*ea_leaf_ptr);


More information about the cluster-commits mailing list