const struct btrfs_key *key, struct btrfs_path *p,
                      int ins_len, int cow)
 {
-       struct btrfs_fs_info *fs_info = root->fs_info;
        struct extent_buffer *b;
        int slot;
        int ret;
                } else {
                        p->slots[level] = slot;
                        if (ins_len > 0 &&
-                           btrfs_leaf_free_space(fs_info, b) < ins_len) {
+                           btrfs_leaf_free_space(b) < ins_len) {
                                if (write_lock_level < 1) {
                                        write_lock_level = 1;
                                        btrfs_release_path(p);
  * the start of the leaf data.  IOW, how much room
  * the leaf has left for both items and data
  */
-noinline int btrfs_leaf_free_space(struct btrfs_fs_info *fs_info,
-                                  struct extent_buffer *leaf)
+noinline int btrfs_leaf_free_space(struct extent_buffer *leaf)
 {
+       struct btrfs_fs_info *fs_info = leaf->fs_info;
        int nritems = btrfs_header_nritems(leaf);
        int ret;
 
                        if (path->slots[0] > i)
                                break;
                        if (path->slots[0] == i) {
-                               int space = btrfs_leaf_free_space(fs_info, left);
+                               int space = btrfs_leaf_free_space(left);
+
                                if (space + push_space * 2 > free_space)
                                        break;
                        }
        btrfs_tree_lock(right);
        btrfs_set_lock_blocking_write(right);
 
-       free_space = btrfs_leaf_free_space(fs_info, right);
+       free_space = btrfs_leaf_free_space(right);
        if (free_space < data_size)
                goto out_unlock;
 
        if (ret)
                goto out_unlock;
 
-       free_space = btrfs_leaf_free_space(fs_info, right);
+       free_space = btrfs_leaf_free_space(right);
        if (free_space < data_size)
                goto out_unlock;
 
                        if (path->slots[0] < i)
                                break;
                        if (path->slots[0] == i) {
-                               int space = btrfs_leaf_free_space(fs_info, right);
+                               int space = btrfs_leaf_free_space(right);
+
                                if (space + push_space * 2 > free_space)
                                        break;
                        }
        btrfs_tree_lock(left);
        btrfs_set_lock_blocking_write(left);
 
-       free_space = btrfs_leaf_free_space(fs_info, left);
+       free_space = btrfs_leaf_free_space(left);
        if (free_space < data_size) {
                ret = 1;
                goto out;
                goto out;
        }
 
-       free_space = btrfs_leaf_free_space(fs_info, left);
+       free_space = btrfs_leaf_free_space(left);
        if (free_space < data_size) {
                ret = 1;
                goto out;
                                          struct btrfs_path *path,
                                          int data_size)
 {
-       struct btrfs_fs_info *fs_info = root->fs_info;
        int ret;
        int progress = 0;
        int slot;
 
        slot = path->slots[0];
        if (slot < btrfs_header_nritems(path->nodes[0]))
-               space_needed -= btrfs_leaf_free_space(fs_info, path->nodes[0]);
+               space_needed -= btrfs_leaf_free_space(path->nodes[0]);
 
        /*
         * try to push all the items after our slot into the
        if (path->slots[0] == 0 || path->slots[0] == nritems)
                return 0;
 
-       if (btrfs_leaf_free_space(fs_info, path->nodes[0]) >= data_size)
+       if (btrfs_leaf_free_space(path->nodes[0]) >= data_size)
                return 0;
 
        /* try to push all the items before our slot into the next leaf */
        slot = path->slots[0];
        space_needed = data_size;
        if (slot > 0)
-               space_needed -= btrfs_leaf_free_space(fs_info, path->nodes[0]);
+               space_needed -= btrfs_leaf_free_space(path->nodes[0]);
        ret = push_leaf_left(trans, root, path, 1, space_needed, 0, slot);
        if (ret < 0)
                return ret;
                int space_needed = data_size;
 
                if (slot < btrfs_header_nritems(l))
-                       space_needed -= btrfs_leaf_free_space(fs_info, l);
+                       space_needed -= btrfs_leaf_free_space(l);
 
                wret = push_leaf_right(trans, root, path, space_needed,
                                       space_needed, 0, 0);
                if (wret) {
                        space_needed = data_size;
                        if (slot > 0)
-                               space_needed -= btrfs_leaf_free_space(fs_info,
-                                                                     l);
+                               space_needed -= btrfs_leaf_free_space(l);
                        wret = push_leaf_left(trans, root, path, space_needed,
                                              space_needed, 0, (u32)-1);
                        if (wret < 0)
                l = path->nodes[0];
 
                /* did the pushes work? */
-               if (btrfs_leaf_free_space(fs_info, l) >= data_size)
+               if (btrfs_leaf_free_space(l) >= data_size)
                        return 0;
        }
 
 push_for_double:
        push_for_double_split(trans, root, path, data_size);
        tried_avoid_double = 1;
-       if (btrfs_leaf_free_space(fs_info, path->nodes[0]) >= data_size)
+       if (btrfs_leaf_free_space(path->nodes[0]) >= data_size)
                return 0;
        goto again;
 }
                                         struct btrfs_root *root,
                                         struct btrfs_path *path, int ins_len)
 {
-       struct btrfs_fs_info *fs_info = root->fs_info;
        struct btrfs_key key;
        struct extent_buffer *leaf;
        struct btrfs_file_extent_item *fi;
        BUG_ON(key.type != BTRFS_EXTENT_DATA_KEY &&
               key.type != BTRFS_EXTENT_CSUM_KEY);
 
-       if (btrfs_leaf_free_space(fs_info, leaf) >= ins_len)
+       if (btrfs_leaf_free_space(leaf) >= ins_len)
                return 0;
 
        item_size = btrfs_item_size_nr(leaf, path->slots[0]);
                goto err;
 
        /* the leaf has  changed, it now has room.  return now */
-       if (btrfs_leaf_free_space(fs_info, path->nodes[0]) >= ins_len)
+       if (btrfs_leaf_free_space(path->nodes[0]) >= ins_len)
                goto err;
 
        if (key.type == BTRFS_EXTENT_DATA_KEY) {
        struct btrfs_disk_key disk_key;
 
        leaf = path->nodes[0];
-       BUG_ON(btrfs_leaf_free_space(fs_info, leaf) < sizeof(struct btrfs_item));
+       BUG_ON(btrfs_leaf_free_space(leaf) < sizeof(struct btrfs_item));
 
        btrfs_set_path_blocking(path);
 
                            item_size - split_offset);
        btrfs_mark_buffer_dirty(leaf);
 
-       BUG_ON(btrfs_leaf_free_space(fs_info, leaf) < 0);
+       BUG_ON(btrfs_leaf_free_space(leaf) < 0);
        kfree(buf);
        return 0;
 }
        btrfs_set_item_size(leaf, item, new_size);
        btrfs_mark_buffer_dirty(leaf);
 
-       if (btrfs_leaf_free_space(fs_info, leaf) < 0) {
+       if (btrfs_leaf_free_space(leaf) < 0) {
                btrfs_print_leaf(leaf);
                BUG();
        }
        nritems = btrfs_header_nritems(leaf);
        data_end = leaf_data_end(leaf);
 
-       if (btrfs_leaf_free_space(fs_info, leaf) < data_size) {
+       if (btrfs_leaf_free_space(leaf) < data_size) {
                btrfs_print_leaf(leaf);
                BUG();
        }
        btrfs_set_item_size(leaf, item, old_size + data_size);
        btrfs_mark_buffer_dirty(leaf);
 
-       if (btrfs_leaf_free_space(fs_info, leaf) < 0) {
+       if (btrfs_leaf_free_space(leaf) < 0) {
                btrfs_print_leaf(leaf);
                BUG();
        }
        nritems = btrfs_header_nritems(leaf);
        data_end = leaf_data_end(leaf);
 
-       if (btrfs_leaf_free_space(fs_info, leaf) < total_size) {
+       if (btrfs_leaf_free_space(leaf) < total_size) {
                btrfs_print_leaf(leaf);
                btrfs_crit(fs_info, "not enough freespace need %u have %d",
-                          total_size, btrfs_leaf_free_space(fs_info, leaf));
+                          total_size, btrfs_leaf_free_space(leaf));
                BUG();
        }
 
        btrfs_set_header_nritems(leaf, nritems + nr);
        btrfs_mark_buffer_dirty(leaf);
 
-       if (btrfs_leaf_free_space(fs_info, leaf) < 0) {
+       if (btrfs_leaf_free_space(leaf) < 0) {
                btrfs_print_leaf(leaf);
                BUG();
        }