diff -Nurp xfsprogs-3.0.5/repair/dir2.c xfsprogs-3.0.5-dirty/repair/dir2.c --- xfsprogs-3.0.5/repair/dir2.c 2010-07-16 13:07:09.000000000 +0900 +++ xfsprogs-3.0.5-dirty/repair/dir2.c 2011-01-28 18:49:21.000000000 +0900 @@ -110,9 +110,10 @@ da_read_buf( bplist[i] = libxfs_readbuf(mp->m_dev, XFS_FSB_TO_DADDR(mp, bmp[i].startblock), XFS_FSB_TO_BB(mp, bmp[i].blockcount), 0); - if (!bplist[i]) + if (!bplist[i]){ + nex = i; goto failed; - + } pftrace("readbuf %p (%llu, %d)", bplist[i], (long long)XFS_BUF_ADDR(bplist[i]), XFS_BUF_COUNT(bplist[i]));