u64 btrfs_file_extent_end(const struct btrfs_path *path);
 
 /* inode.c */
+blk_status_t btrfs_submit_data_bio(struct inode *inode, struct bio *bio,
+                                  int mirror_num, unsigned long bio_flags);
 int btrfs_verify_data_csum(struct btrfs_io_bio *io_bio, u64 phy_offset,
                           struct page *page, u64 start, u64 end, int mirror);
 struct extent_map *btrfs_get_extent_fiemap(struct btrfs_inode *inode,
 
 
        bio->bi_private = NULL;
 
-       ret = tree->ops->submit_bio_hook(tree->private_data, bio, mirror_num,
-                                        bio_flags);
+       if (is_data_inode(tree->private_data))
+               ret = btrfs_submit_data_bio(tree->private_data, bio, mirror_num,
+                                           bio_flags);
+       else
+               ret = tree->ops->submit_bio_hook(tree->private_data, bio,
+                                                mirror_num, bio_flags);
 
        return blk_status_to_errno(ret);
 }
                        if (!btrfs_submit_read_repair(inode, bio, offset, page,
                                                start - page_offset(page),
                                                start, end, mirror,
-                                               tree->ops->submit_bio_hook)) {
+                                               btrfs_submit_data_bio)) {
                                uptodate = !bio->bi_status;
                                offset += len;
                                continue;
 
  *
  *    c-3) otherwise:                  async submit
  */
-static blk_status_t btrfs_submit_bio_hook(struct inode *inode, struct bio *bio,
-                                         int mirror_num,
-                                         unsigned long bio_flags)
+blk_status_t btrfs_submit_data_bio(struct inode *inode, struct bio *bio,
+                                  int mirror_num, unsigned long bio_flags)
 
 {
        struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb);
 };
 
 static const struct extent_io_ops btrfs_extent_io_ops = {
-       /* mandatory callbacks */
-       .submit_bio_hook = btrfs_submit_bio_hook,
+       .submit_bio_hook = NULL
 };
 
 /*