return 0;
 }
 
-static inline struct btrfs_delayed_root *btrfs_get_delayed_root(
-                                                       struct btrfs_root *root)
-{
-       return root->fs_info->delayed_root;
-}
-
 static struct btrfs_delayed_node *btrfs_get_delayed_node(struct inode *inode)
 {
        struct btrfs_inode *btrfs_inode = BTRFS_I(inode);
        block_rsv = trans->block_rsv;
        trans->block_rsv = &fs_info->delayed_block_rsv;
 
-       delayed_root = btrfs_get_delayed_root(root);
+       delayed_root = fs_info->delayed_root;
 
        curr_node = btrfs_first_delayed_node(delayed_root);
        while (curr_node && (!count || (count && nr--))) {
        return 0;
 }
 
-void btrfs_assert_delayed_root_empty(struct btrfs_root *root)
+void btrfs_assert_delayed_root_empty(struct btrfs_fs_info *fs_info)
 {
-       struct btrfs_delayed_root *delayed_root;
-       delayed_root = btrfs_get_delayed_root(root);
-       WARN_ON(btrfs_first_delayed_node(delayed_root));
+       WARN_ON(btrfs_first_delayed_node(fs_info->delayed_root));
 }
 
 static int could_end_wait(struct btrfs_delayed_root *delayed_root, int seq)
        struct btrfs_delayed_root *delayed_root;
        struct btrfs_fs_info *fs_info = root->fs_info;
 
-       delayed_root = btrfs_get_delayed_root(root);
+       delayed_root = fs_info->delayed_root;
 
        if (atomic_read(&delayed_root->items) < BTRFS_DELAYED_BACKGROUND)
                return;
        }
 }
 
-void btrfs_destroy_delayed_inodes(struct btrfs_root *root)
+void btrfs_destroy_delayed_inodes(struct btrfs_fs_info *fs_info)
 {
-       struct btrfs_delayed_root *delayed_root;
        struct btrfs_delayed_node *curr_node, *prev_node;
 
-       delayed_root = btrfs_get_delayed_root(root);
-
-       curr_node = btrfs_first_delayed_node(delayed_root);
+       curr_node = btrfs_first_delayed_node(fs_info->delayed_root);
        while (curr_node) {
                __btrfs_kill_delayed_node(curr_node);
 
 
 void btrfs_kill_all_delayed_nodes(struct btrfs_root *root);
 
 /* Used for clean the transaction */
-void btrfs_destroy_delayed_inodes(struct btrfs_root *root);
+void btrfs_destroy_delayed_inodes(struct btrfs_fs_info *fs_info);
 
 /* Used for readdir() */
 bool btrfs_readdir_get_delayed_items(struct inode *inode,
 void btrfs_delayed_inode_exit(void);
 
 /* for debugging */
-void btrfs_assert_delayed_root_empty(struct btrfs_root *root);
+void btrfs_assert_delayed_root_empty(struct btrfs_fs_info *fs_info);
 
 #endif
 
        cur_trans->state = TRANS_STATE_UNBLOCKED;
        wake_up(&fs_info->transaction_wait);
 
-       btrfs_destroy_delayed_inodes(root);
-       btrfs_assert_delayed_root_empty(root);
+       btrfs_destroy_delayed_inodes(fs_info);
+       btrfs_assert_delayed_root_empty(fs_info);
 
        btrfs_destroy_marked_extents(root, &cur_trans->dirty_pages,
                                     EXTENT_DIRTY);
        }
        spin_unlock(&fs_info->trans_lock);
        btrfs_destroy_all_ordered_extents(fs_info);
-       btrfs_destroy_delayed_inodes(root);
-       btrfs_assert_delayed_root_empty(root);
+       btrfs_destroy_delayed_inodes(fs_info);
+       btrfs_assert_delayed_root_empty(fs_info);
        btrfs_destroy_pinned_extent(root, fs_info->pinned_extents);
        btrfs_destroy_all_delalloc_inodes(fs_info);
        mutex_unlock(&fs_info->transaction_kthread_mutex);