From: Eric Sandeen Date: Sun, 23 Feb 2014 21:11:29 +0000 (+1100) Subject: xfs_repair: fix sibling pointer tests in verify_dir2_path() X-Git-Tag: v3.2.0-rc1~66 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d58685851222c12bc3c089f40c159268f26705c4;p=thirdparty%2Fxfsprogs-dev.git xfs_repair: fix sibling pointer tests in verify_dir2_path() RH QE reported that if we create a 1G filesystem with default options, mount it, and create inodes until full, then run repair, repair reports corruption in verify_dir2_path() with: > bad back pointer in block 8390324 for directory inode 131 The commit 88b32f0 xfs: add CRCs to dir2/da node blocks had a small error which regressed this; although we switch to the "newnode," to check sibling pointers, we re-populate the node hdr with the old "node" data. This causes the backpointer test to be testing the wrong node's values. Fixing this bug fixes the testcase. Signed-off-by: Eric Sandeen Reviewed-by: Christoph Hellwig Signed-off-by: Dave Chinner --- diff --git a/repair/dir2.c b/repair/dir2.c index 3aabcaa1b..06dc0008c 100644 --- a/repair/dir2.c +++ b/repair/dir2.c @@ -552,7 +552,7 @@ _("can't read block %u for directory inode %" PRIu64 "\n"), newnode = bp->b_addr; btree = xfs_da3_node_tree_p(newnode); - xfs_da3_node_hdr_from_disk(&nodehdr, node); + xfs_da3_node_hdr_from_disk(&nodehdr, newnode); /* * verify magic number and back pointer, sanity-check * entry count, verify level