Btrfs: fix that repair code is spuriously executed for transid failures

If verify_parent_transid() fails for all mirrors, the current code
calls repair_io_failure() anyway which means:
- that the disk block is rewritten without repairing anything and
- that a kernel log message is printed which misleadingly claims
that a read error was corrected.

This is an example:
parent transid verify failed on 615015833600 wanted 110423 found 110424
parent transid verify failed on 615015833600 wanted 110423 found 110424
btrfs read error corrected: ino 1 off 615015833600 (dev /dev/...)

It is wrong to ignore the results from verify_parent_transid() and to
call repair_eb_io_failure() when the verification of the transids failed.
This commit fixes the issue.

Signed-off-by: Stefan Behrens <sbehrens@giantdisaster.de>
Signed-off-by: Chris Mason <chris.mason@oracle.com>

authored by Stefan Behrens and committed by Chris Mason 256dd1bb d280e5be

+6 -2
+6 -2
fs/btrfs/disk-io.c
··· 377 ret = read_extent_buffer_pages(io_tree, eb, start, 378 WAIT_COMPLETE, 379 btree_get_extent, mirror_num); 380 - if (!ret && !verify_parent_transid(io_tree, eb, 381 parent_transid, 0)) 382 - break; 383 384 /* 385 * This buffer's crc is fine, but its contents are corrupted, so
··· 377 ret = read_extent_buffer_pages(io_tree, eb, start, 378 WAIT_COMPLETE, 379 btree_get_extent, mirror_num); 380 + if (!ret) { 381 + if (!verify_parent_transid(io_tree, eb, 382 parent_transid, 0)) 383 + break; 384 + else 385 + ret = -EIO; 386 + } 387 388 /* 389 * This buffer's crc is fine, but its contents are corrupted, so