Btrfs: do file data check by sub-bio's self
authorMiao Xie <miaox@cn.fujitsu.com>
Fri, 12 Sep 2014 10:43:56 +0000 (18:43 +0800)
committerChris Mason <clm@fb.com>
Wed, 17 Sep 2014 20:38:53 +0000 (13:38 -0700)
commitc1dc08967f69c6b5067f8302c600f6628123f3bf
tree4ef7d1c9471cdadc8c49266d4e3dfd738dc73ae3
parentdc380aea5fa4636fc498a351eb720943bc644451
Btrfs: do file data check by sub-bio's self

Direct IO splits the original bio to several sub-bios because of the limit of
raid stripe, and the filesystem will wait for all sub-bios and then run final
end io process.

But it was very hard to implement the data repair when dio read failure happens,
because at the final end io function, we didn't know which mirror the data was
read from. So in order to implement the data repair, we have to move the file data
check in the final end io function to the sub-bio end io function, in which we can
get the mirror number of the device we access. This patch did this work as the
first step of the direct io data repair implementation.

Signed-off-by: Miao Xie <miaox@cn.fujitsu.com>
Signed-off-by: Chris Mason <clm@fb.com>
fs/btrfs/btrfs_inode.h
fs/btrfs/extent_io.c
fs/btrfs/inode.c
fs/btrfs/volumes.h