*              means this bio can contains potentially discontigous bio vecs
  *              so the logical offset of each should be calculated separately.
  */
-blk_status_t btrfs_csum_one_bio(struct inode *inode, struct bio *bio,
+blk_status_t btrfs_csum_one_bio(struct inode *vfsinode, struct bio *bio,
                       u64 file_start, int contig)
 {
-       struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb);
+       struct btrfs_inode *inode = BTRFS_I(vfsinode);
+       struct btrfs_fs_info *fs_info = inode->root->fs_info;
        SHASH_DESC_ON_STACK(shash, fs_info->csum_shash);
        struct btrfs_ordered_sum *sums;
        struct btrfs_ordered_extent *ordered = NULL;
 
        lock_extent_bits(io_tree, block_start, block_end, &cached_state);
        set_page_extent_mapped(page);
 
-       ordered = btrfs_lookup_ordered_extent(inode, block_start);
+       ordered = btrfs_lookup_ordered_extent(BTRFS_I(inode), block_start);
        if (ordered) {
                unlock_extent_cached(io_tree, block_start, block_end,
                                     &cached_state);
 
                while (1) {
                        lock_extent_bits(tree, page_start, page_end,
                                         &cached_state);
-                       ordered = btrfs_lookup_ordered_extent(inode,
+                       ordered = btrfs_lookup_ordered_extent(BTRFS_I(inode),
                                                              page_start);
                        unlock_extent_cached(tree, page_start, page_end,
                                             &cached_state);
 
  * find an ordered extent corresponding to file_offset.  return NULL if
  * nothing is found, otherwise take a reference on the extent and return it
  */
-struct btrfs_ordered_extent *btrfs_lookup_ordered_extent(struct inode *inode,
+struct btrfs_ordered_extent *btrfs_lookup_ordered_extent(struct btrfs_inode *inode,
                                                         u64 file_offset)
 {
        struct btrfs_ordered_inode_tree *tree;
        struct rb_node *node;
        struct btrfs_ordered_extent *entry = NULL;
 
-       tree = &BTRFS_I(inode)->ordered_tree;
+       tree = &inode->ordered_tree;
        spin_lock_irq(&tree->lock);
        node = tree_search(tree, file_offset);
        if (!node)
        const u16 csum_size = btrfs_super_csum_size(fs_info->super_copy);
        int index = 0;
 
-       ordered = btrfs_lookup_ordered_extent(inode, offset);
+       ordered = btrfs_lookup_ordered_extent(BTRFS_I(inode), offset);
        if (!ordered)
                return 0;
 
 
                                      int compress_type);
 void btrfs_add_ordered_sum(struct btrfs_ordered_extent *entry,
                           struct btrfs_ordered_sum *sum);
-struct btrfs_ordered_extent *btrfs_lookup_ordered_extent(struct inode *inode,
+struct btrfs_ordered_extent *btrfs_lookup_ordered_extent(struct btrfs_inode *inode,
                                                         u64 file_offset);
 void btrfs_start_ordered_extent(struct inode *inode,
                                struct btrfs_ordered_extent *entry, int wait);
 
        u64 new_bytenr;
        LIST_HEAD(list);
 
-       ordered = btrfs_lookup_ordered_extent(inode, file_pos);
+       ordered = btrfs_lookup_ordered_extent(BTRFS_I(inode), file_pos);
        BUG_ON(ordered->file_offset != file_pos || ordered->num_bytes != len);
 
        disk_bytenr = file_pos + BTRFS_I(inode)->index_cnt;