Btrfs: Handle data checksumming on bios that span multiple ordered extents
Data checksumming is done right before the bio is sent down the IO stack,
which means a single bio might span more than one ordered extent. In
this case, the checksumming data is split between two ordered extents.
Signed-off-by: Chris Mason <chris.mason@oracle.com>
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index f37e09e..4d729d9 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -351,12 +351,8 @@
{
struct btrfs_root *root = BTRFS_I(inode)->root;
int ret = 0;
- struct btrfs_ordered_sum *sums;
- ret = btrfs_csum_one_bio(root, bio, &sums);
- BUG_ON(ret);
-
- ret = btrfs_add_ordered_sum(inode, sums);
+ ret = btrfs_csum_one_bio(root, inode, bio);
BUG_ON(ret);
return btrfs_map_bio(root, rw, bio, mirror_num, 1);