btrfs-progs: replace test_issubvolume() with btrfs_util_is_subvolume()
[platform/upstream/btrfs-progs.git] / ctree.c
diff --git a/ctree.c b/ctree.c
index 6d130f5..45b368c 100644 (file)
--- a/ctree.c
+++ b/ctree.c
@@ -408,12 +408,12 @@ static int btrfs_comp_keys(struct btrfs_disk_key *disk, struct btrfs_key *k2)
  * this returns the address of the start of the last item,
  * which is the stop of the leaf data stack
  */
-static inline unsigned int leaf_data_end(struct btrfs_root *root,
-                                        struct extent_buffer *leaf)
+static inline unsigned int leaf_data_end(const struct btrfs_fs_info *fs_info,
+                                        const struct extent_buffer *leaf)
 {
        u32 nr = btrfs_header_nritems(leaf);
        if (nr == 0)
-               return BTRFS_LEAF_DATA_SIZE(root->fs_info);
+               return BTRFS_LEAF_DATA_SIZE(fs_info);
        return btrfs_item_offset_nr(leaf, nr - 1);
 }
 
@@ -427,7 +427,7 @@ btrfs_check_node(struct btrfs_root *root, struct btrfs_disk_key *parent_key,
        u32 nritems = btrfs_header_nritems(buf);
        enum btrfs_tree_block_status ret = BTRFS_TREE_BLOCK_INVALID_NRITEMS;
 
-       if (nritems == 0 || nritems > BTRFS_NODEPTRS_PER_BLOCK(root))
+       if (nritems == 0 || nritems > BTRFS_NODEPTRS_PER_BLOCK(root->fs_info))
                goto fail;
 
        ret = BTRFS_TREE_BLOCK_INVALID_PARENT_KEY;
@@ -714,7 +714,7 @@ static int balance_level(struct btrfs_trans_handle *trans,
                return ret;
        }
        if (btrfs_header_nritems(mid) >
-           BTRFS_NODEPTRS_PER_BLOCK(root) / 4)
+           BTRFS_NODEPTRS_PER_BLOCK(fs_info) / 4)
                return 0;
 
        left = read_node_slot(fs_info, parent, pslot - 1);
@@ -882,7 +882,7 @@ static int noinline push_nodes_for_insert(struct btrfs_trans_handle *trans,
        if (extent_buffer_uptodate(left)) {
                u32 left_nr;
                left_nr = btrfs_header_nritems(left);
-               if (left_nr >= BTRFS_NODEPTRS_PER_BLOCK(root) - 1) {
+               if (left_nr >= BTRFS_NODEPTRS_PER_BLOCK(fs_info) - 1) {
                        wret = 1;
                } else {
                        ret = btrfs_cow_block(trans, root, left, parent,
@@ -925,7 +925,7 @@ static int noinline push_nodes_for_insert(struct btrfs_trans_handle *trans,
        if (extent_buffer_uptodate(right)) {
                u32 right_nr;
                right_nr = btrfs_header_nritems(right);
-               if (right_nr >= BTRFS_NODEPTRS_PER_BLOCK(root) - 1) {
+               if (right_nr >= BTRFS_NODEPTRS_PER_BLOCK(root->fs_info) - 1) {
                        wret = 1;
                } else {
                        ret = btrfs_cow_block(trans, root, right,
@@ -1144,7 +1144,7 @@ again:
                        p->slots[level] = slot;
                        if ((p->search_for_split || ins_len > 0) &&
                            btrfs_header_nritems(b) >=
-                           BTRFS_NODEPTRS_PER_BLOCK(root) - 3) {
+                           BTRFS_NODEPTRS_PER_BLOCK(fs_info) - 3) {
                                int sret = split_node(trans, root, p, level);
                                BUG_ON(sret > 0);
                                if (sret)
@@ -1290,7 +1290,7 @@ static int push_node_left(struct btrfs_trans_handle *trans,
 
        src_nritems = btrfs_header_nritems(src);
        dst_nritems = btrfs_header_nritems(dst);
-       push_items = BTRFS_NODEPTRS_PER_BLOCK(root) - dst_nritems;
+       push_items = BTRFS_NODEPTRS_PER_BLOCK(root->fs_info) - dst_nritems;
        WARN_ON(btrfs_header_generation(src) != trans->transid);
        WARN_ON(btrfs_header_generation(dst) != trans->transid);
 
@@ -1360,7 +1360,7 @@ static int balance_node_right(struct btrfs_trans_handle *trans,
 
        src_nritems = btrfs_header_nritems(src);
        dst_nritems = btrfs_header_nritems(dst);
-       push_items = BTRFS_NODEPTRS_PER_BLOCK(root) - dst_nritems;
+       push_items = BTRFS_NODEPTRS_PER_BLOCK(root->fs_info) - dst_nritems;
        if (push_items <= 0) {
                return 1;
        }
@@ -1488,7 +1488,7 @@ static int insert_ptr(struct btrfs_trans_handle *trans, struct btrfs_root
        nritems = btrfs_header_nritems(lower);
        if (slot > nritems)
                BUG();
-       if (nritems == BTRFS_NODEPTRS_PER_BLOCK(root))
+       if (nritems == BTRFS_NODEPTRS_PER_BLOCK(root->fs_info))
                BUG();
        if (slot < nritems) {
                /* shift the items */
@@ -1537,7 +1537,7 @@ static int split_node(struct btrfs_trans_handle *trans, struct btrfs_root
                ret = push_nodes_for_insert(trans, root, path, level);
                c = path->nodes[level];
                if (!ret && btrfs_header_nritems(c) <
-                   BTRFS_NODEPTRS_PER_BLOCK(root) - 3)
+                   BTRFS_NODEPTRS_PER_BLOCK(root->fs_info) - 3)
                        return 0;
                if (ret < 0)
                        return ret;
@@ -1735,10 +1735,10 @@ static int push_leaf_right(struct btrfs_trans_handle *trans, struct btrfs_root
        right_nritems = btrfs_header_nritems(right);
 
        push_space = btrfs_item_end_nr(left, left_nritems - push_items);
-       push_space -= leaf_data_end(root, left);
+       push_space -= leaf_data_end(fs_info, left);
 
        /* make room in the right data area */
-       data_end = leaf_data_end(root, right);
+       data_end = leaf_data_end(fs_info, right);
        memmove_extent_buffer(right,
                              btrfs_leaf_data(right) + data_end - push_space,
                              btrfs_leaf_data(right) + data_end,
@@ -1747,7 +1747,7 @@ static int push_leaf_right(struct btrfs_trans_handle *trans, struct btrfs_root
        /* copy from the left data area */
        copy_extent_buffer(right, left, btrfs_leaf_data(right) +
                     BTRFS_LEAF_DATA_SIZE(root->fs_info) - push_space,
-                    btrfs_leaf_data(left) + leaf_data_end(root, left),
+                    btrfs_leaf_data(left) + leaf_data_end(fs_info, left),
                     push_space);
 
        memmove_extent_buffer(right, btrfs_item_nr_offset(push_items),
@@ -1885,7 +1885,7 @@ static int push_leaf_left(struct btrfs_trans_handle *trans, struct btrfs_root
                     btrfs_item_offset_nr(right, push_items -1);
 
        copy_extent_buffer(left, right, btrfs_leaf_data(left) +
-                    leaf_data_end(root, left) - push_space,
+                    leaf_data_end(fs_info, left) - push_space,
                     btrfs_leaf_data(right) +
                     btrfs_item_offset_nr(right, push_items - 1),
                     push_space);
@@ -1912,12 +1912,13 @@ static int push_leaf_left(struct btrfs_trans_handle *trans, struct btrfs_root
 
        if (push_items < right_nritems) {
                push_space = btrfs_item_offset_nr(right, push_items - 1) -
-                                                 leaf_data_end(root, right);
+                                                 leaf_data_end(fs_info, right);
                memmove_extent_buffer(right, btrfs_leaf_data(right) +
                                      BTRFS_LEAF_DATA_SIZE(root->fs_info) -
                                      push_space,
                                      btrfs_leaf_data(right) +
-                                     leaf_data_end(root, right), push_space);
+                                     leaf_data_end(fs_info, right),
+                                     push_space);
 
                memmove_extent_buffer(right, btrfs_item_nr_offset(0),
                              btrfs_item_nr_offset(push_items),
@@ -1976,7 +1977,8 @@ static noinline int copy_for_split(struct btrfs_trans_handle *trans,
 
        nritems = nritems - mid;
        btrfs_set_header_nritems(right, nritems);
-       data_copy_size = btrfs_item_end_nr(l, mid) - leaf_data_end(root, l);
+       data_copy_size = btrfs_item_end_nr(l, mid) -
+               leaf_data_end(root->fs_info, l);
 
        copy_extent_buffer(right, l, btrfs_item_nr_offset(0),
                           btrfs_item_nr_offset(mid),
@@ -1986,7 +1988,7 @@ static noinline int copy_for_split(struct btrfs_trans_handle *trans,
                     btrfs_leaf_data(right) +
                     BTRFS_LEAF_DATA_SIZE(root->fs_info) -
                     data_copy_size, btrfs_leaf_data(l) +
-                    leaf_data_end(root, l), data_copy_size);
+                    leaf_data_end(root->fs_info, l), data_copy_size);
 
        rt_data_off = BTRFS_LEAF_DATA_SIZE(root->fs_info) -
                      btrfs_item_end_nr(l, mid);
@@ -2324,7 +2326,7 @@ int btrfs_truncate_item(struct btrfs_root *root, struct btrfs_path *path,
                return 0;
 
        nritems = btrfs_header_nritems(leaf);
-       data_end = leaf_data_end(root, leaf);
+       data_end = leaf_data_end(root->fs_info, leaf);
 
        old_data_start = btrfs_item_offset_nr(leaf, slot);
 
@@ -2413,7 +2415,7 @@ int btrfs_extend_item(struct btrfs_root *root, struct btrfs_path *path,
        leaf = path->nodes[0];
 
        nritems = btrfs_header_nritems(leaf);
-       data_end = leaf_data_end(root, leaf);
+       data_end = leaf_data_end(root->fs_info, leaf);
 
        if (btrfs_leaf_free_space(root, leaf) < data_size) {
                btrfs_print_leaf(root, leaf);
@@ -2499,7 +2501,7 @@ int btrfs_insert_empty_items(struct btrfs_trans_handle *trans,
        leaf = path->nodes[0];
 
        nritems = btrfs_header_nritems(leaf);
-       data_end = leaf_data_end(root, leaf);
+       data_end = leaf_data_end(root->fs_info, leaf);
 
        if (btrfs_leaf_free_space(root, leaf) < total_size) {
                btrfs_print_leaf(root, leaf);
@@ -2690,7 +2692,7 @@ int btrfs_del_items(struct btrfs_trans_handle *trans, struct btrfs_root *root,
        nritems = btrfs_header_nritems(leaf);
 
        if (slot + nr != nritems) {
-               int data_end = leaf_data_end(root, leaf);
+               int data_end = leaf_data_end(root->fs_info, leaf);
 
                memmove_extent_buffer(leaf, btrfs_leaf_data(leaf) +
                              data_end + dsize,