longform_dir2_check_leaf() checks a directory leaf block to help decide if we need to rebuild the directory. If the verifier fails with a CRC or corrupt structure error, rebuild the directory instead of aborting. Signed-off-by: Darrick J. Wong <darrick.wong@xxxxxxxxxx> --- repair/phase6.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/repair/phase6.c b/repair/phase6.c index 1728609..c09b394 100644 --- a/repair/phase6.c +++ b/repair/phase6.c @@ -1951,7 +1951,12 @@ longform_dir2_check_leaf( da_bno = mp->m_dirleafblk; error = dir_read_buf(ip, da_bno, -1, &bp, &xfs_dir3_leaf1_buf_ops, &fixit); - if (error) { + if (error == EFSBADCRC || error == EFSCORRUPTED || fixit) { + do_warn( + _("leaf block %u for directory inode %" PRIu64 " bad CRC\n"), + da_bno, ip->i_ino); + return 1; + } else if (error) { do_error( _("can't read block %u for directory inode %" PRIu64 ", error %d\n"), da_bno, ip->i_ino, error); _______________________________________________ xfs mailing list xfs@xxxxxxxxxxx http://oss.sgi.com/mailman/listinfo/xfs