aboutsummaryrefslogtreecommitdiffstats
path: root/fs/btrfs/inode.c
diff options
context:
space:
mode:
authorChris Mason <chris.mason@oracle.com>2008-07-18 06:17:13 -0400
committerChris Mason <chris.mason@oracle.com>2008-09-25 11:04:05 -0400
commit3edf7d33f4edb1e4a9bb0a4c0a84d95fb4d22a09 (patch)
tree8698a6dd1d0d038f1b56f79c92783518d36f2145 /fs/btrfs/inode.c
parenteb84ae039e10f1f80443d846ba1350122bbdc753 (diff)
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>
Diffstat (limited to 'fs/btrfs/inode.c')
-rw-r--r--fs/btrfs/inode.c6
1 files changed, 1 insertions, 5 deletions
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index f37e09e724f7..4d729d90d2b8 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -351,12 +351,8 @@ int __btrfs_submit_bio_hook(struct inode *inode, int rw, struct bio *bio,
351{ 351{
352 struct btrfs_root *root = BTRFS_I(inode)->root; 352 struct btrfs_root *root = BTRFS_I(inode)->root;
353 int ret = 0; 353 int ret = 0;
354 struct btrfs_ordered_sum *sums;
355 354
356 ret = btrfs_csum_one_bio(root, bio, &sums); 355 ret = btrfs_csum_one_bio(root, inode, bio);
357 BUG_ON(ret);
358
359 ret = btrfs_add_ordered_sum(inode, sums);
360 BUG_ON(ret); 356 BUG_ON(ret);
361 357
362 return btrfs_map_bio(root, rw, bio, mirror_num, 1); 358 return btrfs_map_bio(root, rw, bio, mirror_num, 1);