summaryrefslogtreecommitdiffstats
path: root/fs/btrfs/volumes.h
diff options
context:
space:
mode:
authorMiao Xie2014-09-12 12:43:56 +0200
committerChris Mason2014-09-17 22:38:53 +0200
commitc1dc08967f69c6b5067f8302c600f6628123f3bf (patch)
tree4ef7d1c9471cdadc8c49266d4e3dfd738dc73ae3 /fs/btrfs/volumes.h
parentBtrfs: cleanup similar code of the buffered data data check and dio read data... (diff)
downloadkernel-qcow2-linux-c1dc08967f69c6b5067f8302c600f6628123f3bf.tar.gz
kernel-qcow2-linux-c1dc08967f69c6b5067f8302c600f6628123f3bf.tar.xz
kernel-qcow2-linux-c1dc08967f69c6b5067f8302c600f6628123f3bf.zip
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>
Diffstat (limited to 'fs/btrfs/volumes.h')
-rw-r--r--fs/btrfs/volumes.h5
1 files changed, 3 insertions, 2 deletions
diff --git a/fs/btrfs/volumes.h b/fs/btrfs/volumes.h
index 2b37da3dd408..91998bc0b4c4 100644
--- a/fs/btrfs/volumes.h
+++ b/fs/btrfs/volumes.h
@@ -268,8 +268,9 @@ struct btrfs_fs_devices {
*/
typedef void (btrfs_io_bio_end_io_t) (struct btrfs_io_bio *bio, int err);
struct btrfs_io_bio {
- unsigned long mirror_num;
- unsigned long stripe_index;
+ unsigned int mirror_num;
+ unsigned int stripe_index;
+ u64 logical;
u8 *csum;
u8 csum_inline[BTRFS_BIO_INLINE_CSUM_SIZE];
u8 *csum_allocated;