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) { |
