summaryrefslogtreecommitdiff
path: root/fs/btrfs/scrub.c
diff options
context:
space:
mode:
authorMiao Xie <miaox@cn.fujitsu.com>2014-09-12 10:44:00 (GMT)
committerChris Mason <clm@fb.com>2014-09-17 20:38:58 (GMT)
commitffdd2018dd0bbfc0d9855ed811dba67201766a2d (patch)
tree2a1784606d21d72d54abd3baa04f2c8a1131a4a1 /fs/btrfs/scrub.c
parent2fe6303e7cd099334cdb09370cece6bc168de131 (diff)
downloadlinux-ffdd2018dd0bbfc0d9855ed811dba67201766a2d.tar.xz
Btrfs: modify repair_io_failure and make it suit direct io
The original code of repair_io_failure was just used for buffered read, because it got some filesystem data from page structure, it is safe for the page in the page cache. But when we do a direct read, the pages in bio are not in the page cache, that is there is no filesystem data in the page structure. In order to implement direct read data repair, we need modify repair_io_failure and pass all filesystem data it need by function parameters. Signed-off-by: Miao Xie <miaox@cn.fujitsu.com> Signed-off-by: Chris Mason <clm@fb.com>
Diffstat (limited to 'fs/btrfs/scrub.c')
-rw-r--r--fs/btrfs/scrub.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/fs/btrfs/scrub.c b/fs/btrfs/scrub.c
index 9d80e37..c026fa6 100644
--- a/fs/btrfs/scrub.c
+++ b/fs/btrfs/scrub.c
@@ -682,6 +682,7 @@ static int scrub_fixup_readpage(u64 inum, u64 offset, u64 root, void *fixup_ctx)
fs_info = BTRFS_I(inode)->root->fs_info;
ret = repair_io_failure(fs_info, offset, PAGE_SIZE,
fixup->logical, page,
+ offset - page_offset(page),
fixup->mirror_num);
unlock_page(page);
corrected = !ret;