summaryrefslogtreecommitdiffstats
path: root/fs/btrfs
diff options
context:
space:
mode:
Diffstat (limited to 'fs/btrfs')
-rw-r--r--fs/btrfs/disk-io.c11
1 files changed, 1 insertions, 10 deletions
diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c
index 3f0b6d1936e8..6d776717d8b3 100644
--- a/fs/btrfs/disk-io.c
+++ b/fs/btrfs/disk-io.c
@@ -477,9 +477,9 @@ static int btree_read_extent_buffer_pages(struct btrfs_fs_info *fs_info,
477 int mirror_num = 0; 477 int mirror_num = 0;
478 int failed_mirror = 0; 478 int failed_mirror = 0;
479 479
480 clear_bit(EXTENT_BUFFER_CORRUPT, &eb->bflags);
481 io_tree = &BTRFS_I(fs_info->btree_inode)->io_tree; 480 io_tree = &BTRFS_I(fs_info->btree_inode)->io_tree;
482 while (1) { 481 while (1) {
482 clear_bit(EXTENT_BUFFER_CORRUPT, &eb->bflags);
483 ret = read_extent_buffer_pages(io_tree, eb, WAIT_COMPLETE, 483 ret = read_extent_buffer_pages(io_tree, eb, WAIT_COMPLETE,
484 mirror_num); 484 mirror_num);
485 if (!ret) { 485 if (!ret) {
@@ -493,15 +493,6 @@ static int btree_read_extent_buffer_pages(struct btrfs_fs_info *fs_info,
493 break; 493 break;
494 } 494 }
495 495
496 /*
497 * This buffer's crc is fine, but its contents are corrupted, so
498 * there is no reason to read the other copies, they won't be
499 * any less wrong.
500 */
501 if (test_bit(EXTENT_BUFFER_CORRUPT, &eb->bflags) ||
502 ret == -EUCLEAN)
503 break;
504
505 num_copies = btrfs_num_copies(fs_info, 496 num_copies = btrfs_num_copies(fs_info,
506 eb->start, eb->len); 497 eb->start, eb->len);
507 if (num_copies == 1) 498 if (num_copies == 1)