]> Git Repo - linux.git/commit
Btrfs: bring back repair during read
authorLiu Bo <[email protected]>
Fri, 24 Mar 2017 22:04:50 +0000 (15:04 -0700)
committerDavid Sterba <[email protected]>
Wed, 29 Mar 2017 12:29:07 +0000 (14:29 +0200)
commit9d0d1c8b1c9d80b17cfa86ecd50c8933a742585c
treec3246e651c9e3fd1212853a199e25229ce09cb3c
parente1699d2d7bf6e6cce3e1baff19f9dd4595a58664
Btrfs: bring back repair during read

Commit 20a7db8ab3f2 ("btrfs: add dummy callback for readpage_io_failed
and drop checks") made a cleanup around readpage_io_failed_hook, and
it was supposed to keep the original sematics, but it also
unexpectedly disabled repair during read for dup, raid1 and raid10.

This fixes the problem by letting data's inode call the generic
readpage_io_failed callback by returning -EAGAIN from its
readpage_io_failed_hook in order to notify end_bio_extent_readpage to
do the rest.  We don't call it directly because the generic one takes
an offset from end_bio_extent_readpage() to calculate the index in the
checksum array and inode's readpage_io_failed_hook doesn't offer that
offset.

Cc: David Sterba <[email protected]>
Signed-off-by: Liu Bo <[email protected]>
Reviewed-by: David Sterba <[email protected]>
[ keep the const function attribute ]
Signed-off-by: David Sterba <[email protected]>
fs/btrfs/extent_io.c
fs/btrfs/inode.c
This page took 0.058586 seconds and 4 git commands to generate.