From d58685851222c12bc3c089f40c159268f26705c4 Mon Sep 17 00:00:00 2001 From: Eric Sandeen Date: Mon, 24 Feb 2014 08:11:29 +1100 Subject: [PATCH] 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 --- repair/dir2.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 -- 2.47.2