summaryrefslogtreecommitdiff
path: root/sound/i2c
diff options
context:
space:
mode:
authorOmar Sandoval <osandov@fb.com>2020-04-16 14:46:14 -0700
committerDavid Sterba <dsterba@suse.com>2020-05-25 11:25:25 +0200
commitc7333972b9b571a03bf9aecd1aeecfab81243e8d (patch)
tree64243b0e65485fb237f416d0d2c5c2c69ea7bba9 /sound/i2c
parentc36cac28cb94e58f7e21ff43bdc6064346dab32c (diff)
btrfs: look at full bi_io_vec for repair decision
Read repair does two things: it finds a good copy of data to return to the reader, and it corrects the bad copy on disk. If a read of multiple sectors has an I/O error, repair does an extra "validation" step that issues a separate read for each sector. This allows us to find the exact failing sectors and only rewrite those. This heuristic is implemented in bio_readpage_error()/btrfs_check_repairable() as: failed_bio_pages = failed_bio->bi_iter.bi_size >> PAGE_SHIFT; if (failed_bio_pages > 1) do validation However, at this point, bi_iter may have already been advanced. This means that we'll skip the validation step and rewrite the entire failed read. Fix it by getting the actual size from the biovec (which we can do because this is only called for non-cloned bios, although that will change in a later commit). Fixes: 8a2ee44a371c ("btrfs: look at bi_size for repair decisions") Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com> Signed-off-by: Omar Sandoval <osandov@fb.com> Signed-off-by: David Sterba <dsterba@suse.com>
Diffstat (limited to 'sound/i2c')
0 files changed, 0 insertions, 0 deletions