xfs_repair stops on "traversing filesystem..."

Eric Sandeen sandeen at sandeen.net
Fri Jul 10 15:17:08 CDT 2009


Tomek Kruszona wrote:
> Eric Sandeen wrote:
>> No fix for you yet, but it's in cache_node_get(), in the for(;;) loop,
>> and it looks like cache_node_allocate() fails to get a new node and we
>> keep spinning.  I need to look some more at what's going on....
> 
> Hello!
> 
> Is this specific behavior for this particular broken filesystem or is it
> a bug in functions you mentioned? I'm just curious :)

This looks like some of the caching that xfs_repair does is mis-sized,
and it gets stuck when it's unable to find a slot for a new node to
cache.  IMHO that's still a bug that I'd like to work out.  If it gets
stuck this way, it'd probably be better to exit, and suggest a larger
hash size.

But anyway, I forced a bigger hash size:

xfs_repair -P -o bhash=1024 <blah>

and it did complete.  1024 is probably over the top, but it worked for
me on a 4G machine w/ some swap.

I'd strongly suggest doing a non-obfuscated xfs_metadump, do
xfs_mdrestore of that to some temp.img, run xfs_repair <blah> on that
temp.img, mount it, and see what you're left with; that way you'll know
what you're getting into w/ repair.

I ended up w/ about 5000 files in lost+found just FWIW...

Out of curiosity, do you know how the fs was damaged?

-Eric




More information about the xfs mailing list