diff options
Diffstat (limited to 'fs/btrfs/inode.c')
-rw-r--r-- | fs/btrfs/inode.c | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c index 806708dd7e38..3df0ffad976e 100644 --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c | |||
@@ -881,7 +881,7 @@ int btrfs_merge_bio_hook(struct page *page, unsigned long offset, | |||
881 | * At IO completion time the cums attached on the ordered extent record | 881 | * At IO completion time the cums attached on the ordered extent record |
882 | * are inserted into the btree | 882 | * are inserted into the btree |
883 | */ | 883 | */ |
884 | int __btrfs_submit_bio_hook(struct inode *inode, int rw, struct bio *bio, | 884 | int __btrfs_submit_bio_start(struct inode *inode, int rw, struct bio *bio, |
885 | int mirror_num, unsigned long bio_flags) | 885 | int mirror_num, unsigned long bio_flags) |
886 | { | 886 | { |
887 | struct btrfs_root *root = BTRFS_I(inode)->root; | 887 | struct btrfs_root *root = BTRFS_I(inode)->root; |
@@ -889,7 +889,21 @@ int __btrfs_submit_bio_hook(struct inode *inode, int rw, struct bio *bio, | |||
889 | 889 | ||
890 | ret = btrfs_csum_one_bio(root, inode, bio); | 890 | ret = btrfs_csum_one_bio(root, inode, bio); |
891 | BUG_ON(ret); | 891 | BUG_ON(ret); |
892 | return 0; | ||
893 | } | ||
892 | 894 | ||
895 | /* | ||
896 | * in order to insert checksums into the metadata in large chunks, | ||
897 | * we wait until bio submission time. All the pages in the bio are | ||
898 | * checksummed and sums are attached onto the ordered extent record. | ||
899 | * | ||
900 | * At IO completion time the cums attached on the ordered extent record | ||
901 | * are inserted into the btree | ||
902 | */ | ||
903 | int __btrfs_submit_bio_done(struct inode *inode, int rw, struct bio *bio, | ||
904 | int mirror_num, unsigned long bio_flags) | ||
905 | { | ||
906 | struct btrfs_root *root = BTRFS_I(inode)->root; | ||
893 | return btrfs_map_bio(root, rw, bio, mirror_num, 1); | 907 | return btrfs_map_bio(root, rw, bio, mirror_num, 1); |
894 | } | 908 | } |
895 | 909 | ||
@@ -922,7 +936,8 @@ int btrfs_submit_bio_hook(struct inode *inode, int rw, struct bio *bio, | |||
922 | /* we're doing a write, do the async checksumming */ | 936 | /* we're doing a write, do the async checksumming */ |
923 | return btrfs_wq_submit_bio(BTRFS_I(inode)->root->fs_info, | 937 | return btrfs_wq_submit_bio(BTRFS_I(inode)->root->fs_info, |
924 | inode, rw, bio, mirror_num, | 938 | inode, rw, bio, mirror_num, |
925 | bio_flags, __btrfs_submit_bio_hook); | 939 | bio_flags, __btrfs_submit_bio_start, |
940 | __btrfs_submit_bio_done); | ||
926 | } | 941 | } |
927 | 942 | ||
928 | mapit: | 943 | mapit: |