Btrfs: Don't loop forever on metadata IO failures
authorChris Mason <chris.mason@oracle.com>
Thu, 14 May 2009 17:24:30 +0000 (13:24 -0400)
committerChris Mason <chris.mason@oracle.com>
Thu, 14 May 2009 18:00:32 +0000 (14:00 -0400)
commit76a05b35a320e8c968d0fec8f512a1acae227309
tree611875a5ea273de7208c84884a0ec59d985eb614
parent2757495c906113896b378bf084708846273c87b2
Btrfs: Don't loop forever on metadata IO failures

When a btrfs metadata read fails, the first thing we try to do is find
a good copy on another mirror of the block.  If this fails, read_tree_block()
ends up returning a buffer that isn't up to date.

The btrfs btree reading code was reworked to drop locks and repeat
the search when IO was done, but the changes didn't add a check for failed
reads.  The end result was looping forever on buffers that were never
going to become up to date.

Signed-off-by: Chris Mason <chris.mason@oracle.com>
fs/btrfs/ctree.c