From 621b5ffff91aade1c0998c685378bff15e869a94 Mon Sep 17 00:00:00 2001 From: Eryu Guan Date: Mon, 24 Aug 2015 09:21:01 +1000 Subject: [PATCH] repair: fix wrong logic when validating node magic number Magic number is wrong only when != XFS_DA_NODE_MAGIC and != XFS_DA3_NODE_MAGIC. This is triggered by shared/002 when testing 512 block size XFS. Phase 1 - find and verify superblock... Phase 2 - using internal log - scan filesystem freespace and inode maps... - found root inode chunk Phase 3 - for each AG... - scan (but don't clear) agi unlinked lists... - process known inodes and perform inode discovery... - agno = 0 bad magic number febe in block 64 (108) for directory inode 35 ...... Fix it by changing "||" to "&&". Signed-off-by: Eryu Guan Reviewed-by: Dave Chinner Signed-off-by: Dave Chinner --- repair/attr_repair.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/repair/attr_repair.c b/repair/attr_repair.c index 62f80e7ab..83a07a80c 100644 --- a/repair/attr_repair.c +++ b/repair/attr_repair.c @@ -570,7 +570,7 @@ verify_da_path(xfs_mount_t *mp, * entry count, verify level */ bad = 0; - if (nodehdr.magic != XFS_DA_NODE_MAGIC || + if (nodehdr.magic != XFS_DA_NODE_MAGIC && nodehdr.magic != XFS_DA3_NODE_MAGIC) { do_warn( _("bad magic number %x in block %u (%" PRIu64 ") for directory inode %" PRIu64 "\n"), -- 2.47.3