aboutsummaryrefslogtreecommitdiffstats
path: root/fs/btrfs/extent_io.c
diff options
context:
space:
mode:
authorChris Mason <chris.mason@oracle.com>2008-04-09 16:28:12 -0400
committerChris Mason <chris.mason@oracle.com>2008-09-25 11:04:01 -0400
commit7e38326f5b125288a2baea1d815c500502ab9fc0 (patch)
treec4e173e959c9d3a95b2eb66f8e88f4e2fa526d63 /fs/btrfs/extent_io.c
parentf188591e987e21b6f7f8864c66a02858b95b530e (diff)
Btrfs: Handle checksumming errors while reading data blocks
Signed-off-by: Chris Mason <chris.mason@oracle.com>
Diffstat (limited to 'fs/btrfs/extent_io.c')
-rw-r--r--fs/btrfs/extent_io.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/fs/btrfs/extent_io.c b/fs/btrfs/extent_io.c
index 2f159375c878..866460c3d72c 100644
--- a/fs/btrfs/extent_io.c
+++ b/fs/btrfs/extent_io.c
@@ -1534,6 +1534,15 @@ static int end_bio_extent_readpage(struct bio *bio,
1534 if (ret) 1534 if (ret)
1535 uptodate = 0; 1535 uptodate = 0;
1536 } 1536 }
1537 if (!uptodate && tree->ops &&
1538 tree->ops->readpage_io_failed_hook) {
1539 ret = tree->ops->readpage_io_failed_hook(bio, page,
1540 start, end, state);
1541 if (ret == 0) {
1542 state = NULL;
1543 continue;
1544 }
1545 }
1537 1546
1538 spin_lock_irqsave(&tree->lock, flags); 1547 spin_lock_irqsave(&tree->lock, flags);
1539 if (!state || state->end != end) { 1548 if (!state || state->end != end) {