diff options
Diffstat (limited to 'fs/btrfs/extent_io.c')
-rw-r--r-- | fs/btrfs/extent_io.c | 17 |
1 files changed, 2 insertions, 15 deletions
diff --git a/fs/btrfs/extent_io.c b/fs/btrfs/extent_io.c index 45c81bb4ac82..4c878476bb91 100644 --- a/fs/btrfs/extent_io.c +++ b/fs/btrfs/extent_io.c | |||
@@ -2330,23 +2330,10 @@ static void end_bio_extent_readpage(struct bio *bio, int err) | |||
2330 | if (uptodate && tree->ops && tree->ops->readpage_end_io_hook) { | 2330 | if (uptodate && tree->ops && tree->ops->readpage_end_io_hook) { |
2331 | ret = tree->ops->readpage_end_io_hook(page, start, end, | 2331 | ret = tree->ops->readpage_end_io_hook(page, start, end, |
2332 | state, mirror); | 2332 | state, mirror); |
2333 | if (ret) { | 2333 | if (ret) |
2334 | /* no IO indicated but software detected errors | ||
2335 | * in the block, either checksum errors or | ||
2336 | * issues with the contents */ | ||
2337 | struct btrfs_root *root = | ||
2338 | BTRFS_I(page->mapping->host)->root; | ||
2339 | struct btrfs_device *device; | ||
2340 | |||
2341 | uptodate = 0; | 2334 | uptodate = 0; |
2342 | device = btrfs_find_device_for_logical( | 2335 | else |
2343 | root, start, mirror); | ||
2344 | if (device) | ||
2345 | btrfs_dev_stat_inc_and_print(device, | ||
2346 | BTRFS_DEV_STAT_CORRUPTION_ERRS); | ||
2347 | } else { | ||
2348 | clean_io_failure(start, page); | 2336 | clean_io_failure(start, page); |
2349 | } | ||
2350 | } | 2337 | } |
2351 | 2338 | ||
2352 | if (!uptodate && tree->ops && tree->ops->readpage_io_failed_hook) { | 2339 | if (!uptodate && tree->ops && tree->ops->readpage_io_failed_hook) { |