attr_repair.c has many printf-tracepoints under #ifdef XR_DIR_TRACE, but the similar code in dir2.c does not. Add these same tracepoints to remove more differences between these two pieces of code. Not all messages are quite correct; those will be fixed up last. For now we just make the code more obviously similar. Signed-off-by: Eric Sandeen <sandeen@xxxxxxxxxx> Signed-off-by: Eric Sandeen <sandeen@xxxxxxxxxxx> --- repair/dir2.c | 39 ++++++++++++++++++++++++++++++++++++--- 1 files changed, 36 insertions(+), 3 deletions(-) diff --git a/repair/dir2.c b/repair/dir2.c index 898b27e..d9bd5fc 100644 --- a/repair/dir2.c +++ b/repair/dir2.c @@ -337,6 +337,11 @@ verify_final_dir2_path(xfs_mount_t *mp, struct xfs_da_node_entry *btree; struct xfs_da3_icnode_hdr nodehdr; +#ifdef XR_DIR_TRACE + fprintf(stderr, "in verify_final_dir2_path, this_level = %d\n", + this_level); +#endif + /* * the index should point to the next "unprocessed" entry * in the block which should be the final (rightmost) entry @@ -388,8 +393,17 @@ verify_final_dir2_path(xfs_mount_t *mp, /* * ok, now check descendant block number against this level */ - if (cursor->level[p_level].bno != be32_to_cpu(btree[entry].before)) + if (cursor->level[p_level].bno != be32_to_cpu(btree[entry].before)) { +#ifdef XR_DIR_TRACE + fprintf(stderr, "bad directory btree pointer, child bno should " + "be %d, block bno is %d, hashval is %u\n", + be16_to_cpu(btree[entry].before), + cursor->level[p_level].bno, + cursor->level[p_level].hashval); + fprintf(stderr, "verify_final_dir2_path returns 1 (bad) #1a\n"); +#endif return(1); + } if (cursor->level[p_level].hashval != be32_to_cpu(btree[entry].hashval)) { @@ -431,8 +445,12 @@ _("would correct bad hashval in non-leaf dir block\n" /* * bail out if this is the root block (top of tree) */ - if (this_level >= cursor->active) + if (this_level >= cursor->active) { +#ifdef XR_DIR_TRACE + fprintf(stderr, "verify_final_dir2_path returns 0 (ok)\n"); +#endif return(0); + } /* * set hashvalue to correctl reflect the now-validated * last entry in this block and continue upwards validation @@ -600,6 +618,9 @@ _("bad level %d in block %u for directory inode %" PRIu64 "\n"), bad++; } if (bad) { +#ifdef XR_DIR_TRACE + fprintf(stderr, "verify_dir2_path returns 1 (bad) #4\n"); +#endif libxfs_putbuf(bp); return(1); } @@ -631,8 +652,17 @@ _("bad level %d in block %u for directory inode %" PRIu64 "\n"), /* * ditto for block numbers */ - if (cursor->level[p_level].bno != be32_to_cpu(btree[entry].before)) + if (cursor->level[p_level].bno != be32_to_cpu(btree[entry].before)) { +#ifdef XR_DIR_TRACE + fprintf(stderr, "bad directory btree pointer, child bno " + "should be %d, block bno is %d, hashval is %u\n", + be32_to_cpu(btree[entry].before), + cursor->level[p_level].bno, + cursor->level[p_level].hashval); + fprintf(stderr, "verify_dir2_path returns 1 (bad) #1a\n"); +#endif return(1); + } /* * ok, now validate last hashvalue in the descendant * block against the hashval in the current entry @@ -659,6 +689,9 @@ _("would correct bad hashval in interior dir block\n" * (which should point to the next descendant block) */ cursor->level[this_level].index++; +#ifdef XR_DIR_TRACE + fprintf(stderr, "verify_dir2_path returns 0 (ok)\n"); +#endif return(0); } -- 1.7.1 _______________________________________________ xfs mailing list xfs@xxxxxxxxxxx http://oss.sgi.com/mailman/listinfo/xfs