free_extent(root, buf->blocknr, 1);
                tree_block_release(root, buf);
        } else {
-               parent->node.blockptrs[parent_slot] = cow->blocknr;
+               btrfs_set_node_blockptr(&parent->node, parent_slot,
+                                       cow->blocknr);
                BUG_ON(list_empty(&parent->dirty));
                free_extent(root, buf->blocknr, 1);
        }
                parent_key = &parent->keys[parent_slot];
                BUG_ON(memcmp(parent_key, node->keys,
                              sizeof(struct btrfs_disk_key)));
-               BUG_ON(parent->blockptrs[parent_slot] !=
+               BUG_ON(btrfs_node_blockptr(parent, parent_slot) !=
                       btrfs_header_blocknr(&node->header));
        }
        BUG_ON(nritems > NODEPTRS_PER_BLOCK);
                parent_key = &parent->keys[parent_slot];
                BUG_ON(memcmp(parent_key, &leaf->items[0].key,
                       sizeof(struct btrfs_disk_key)));
-               BUG_ON(parent->blockptrs[parent_slot] !=
+               BUG_ON(btrfs_node_blockptr(parent, parent_slot) !=
                       btrfs_header_blocknr(&leaf->header));
        }
        for (i = 0; nritems > 1 && i < nritems - 2; i++) {
                return NULL;
        if (slot >= btrfs_header_nritems(&node->header))
                return NULL;
-       return read_tree_block(root, node->blockptrs[slot]);
+       return read_tree_block(root, btrfs_node_blockptr(node, slot));
 }
 
 static int balance_level(struct ctree_root *root, struct ctree_path *path,
 
        mid_buf = path->nodes[level];
        mid = &mid_buf->node;
-       orig_ptr = mid->blockptrs[orig_slot];
+       orig_ptr = btrfs_node_blockptr(mid, orig_slot);
 
        if (level < MAX_LEVEL - 1)
                parent_buf = path->nodes[level + 1];
        }
        /* double check we haven't messed things up */
        check_block(path, level);
-       if (orig_ptr != path->nodes[level]->node.blockptrs[path->slots[level]])
+       if (orig_ptr != btrfs_node_blockptr(&path->nodes[level]->node,
+                                           path->slots[level]))
                BUG();
 
        if (right_buf)
                                slot = p->slots[level];
                                BUG_ON(btrfs_header_nritems(&c->header) == 1);
                        }
-                       b = read_tree_block(root, c->blockptrs[slot]);
+                       b = read_tree_block(root, btrfs_node_blockptr(c, slot));
                } else {
                        struct leaf *l = (struct leaf *)c;
                        p->slots[level] = slot;
        else
                lower_key = lower->keys;
        memcpy(c->keys, lower_key, sizeof(struct btrfs_disk_key));
-       c->blockptrs[0] = path->nodes[level-1]->blocknr;
+       btrfs_set_node_blockptr(c, 0, path->nodes[level - 1]->blocknr);
        /* the super has an extra ref to root->node */
        tree_block_release(root, root->node);
        root->node = t;
                        (nritems - slot) * sizeof(u64));
        }
        memcpy(lower->keys + slot, key, sizeof(struct btrfs_disk_key));
-       lower->blockptrs[slot] = blocknr;
+       btrfs_set_node_blockptr(lower, slot, blocknr);
        btrfs_set_header_nritems(&lower->header, nritems + 1);
        if (lower->keys[1].objectid == 0)
                        BUG();
        if (slot >= btrfs_header_nritems(&upper->node.header) - 1) {
                return 1;
        }
-       right_buf = read_tree_block(root, upper->node.blockptrs[slot + 1]);
+       right_buf = read_tree_block(root, btrfs_node_blockptr(&upper->node,
+                                                             slot + 1));
        right = &right_buf->leaf;
        free_space = leaf_free_space(right);
        if (free_space < data_size + sizeof(struct btrfs_item)) {
        if (!path->nodes[1]) {
                return 1;
        }
-       t = read_tree_block(root, path->nodes[1]->node.blockptrs[slot - 1]);
+       t = read_tree_block(root, btrfs_node_blockptr(&path->nodes[1]->node,
+                                                     slot - 1));
        left = &t->leaf;
        free_space = leaf_free_space(left);
        if (free_space < data_size + sizeof(struct btrfs_item)) {
                        level++;
                        continue;
                }
-               blocknr = c->node.blockptrs[slot];
+               blocknr = btrfs_node_blockptr(&c->node, slot);
                if (next)
                        tree_block_release(root, next);
                next = read_tree_block(root, blocknr);
                path->slots[level] = 0;
                if (!level)
                        break;
-               next = read_tree_block(root, next->node.blockptrs[0]);
+               next = read_tree_block(root,
+                                      btrfs_node_blockptr(&next->node, 0));
        }
        return 0;
 }