mirror of
https://github.com/torvalds/linux.git
synced 2024-11-27 06:31:52 +00:00
btrfs: don't do repair validation for checksum errors
The purpose of the validation step is to distinguish between good and bad sectors in a failed multi-sector read. If a multi-sector read succeeded but some of those sectors had checksum errors, we don't need to validate anything; we know the sectors with bad checksums need to be repaired. Reviewed-by: Josef Bacik <josef@toxicpanda.com> Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com> Signed-off-by: Omar Sandoval <osandov@fb.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
c7333972b9
commit
f337bd7478
@ -2640,6 +2640,14 @@ static bool btrfs_io_needs_validation(struct inode *inode, struct bio *bio)
|
||||
u64 len = 0;
|
||||
int i;
|
||||
|
||||
/*
|
||||
* If bi_status is BLK_STS_OK, then this was a checksum error, not an
|
||||
* I/O error. In this case, we already know exactly which sector was
|
||||
* bad, so we don't need to validate.
|
||||
*/
|
||||
if (bio->bi_status == BLK_STS_OK)
|
||||
return false;
|
||||
|
||||
/*
|
||||
* We need to validate each sector individually if the failed I/O was
|
||||
* for multiple sectors.
|
||||
|
Loading…
Reference in New Issue
Block a user