summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Mason <chris.mason@oracle.com>2007-03-14 10:31:29 -0400
committerDavid Woodhouse <dwmw2@hera.kernel.org>2007-03-14 10:31:29 -0400
commit942050de0e7cd8ba5fbe312659a8824e0b8ee9ba (patch)
tree798044542e3c5defee8169905f90f99d6f1f0df9
parent0975c87bcefbc7e3a6c52af13c604ea3b3f3bb10 (diff)
add leaf data casting helper
-rw-r--r--ctree.h4
-rw-r--r--extent-tree.c8
-rw-r--r--print-tree.c5
3 files changed, 8 insertions, 9 deletions
diff --git a/ctree.h b/ctree.h
index 0968899f..05c77072 100644
--- a/ctree.h
+++ b/ctree.h
@@ -401,6 +401,10 @@ static inline void btrfs_set_super_blocksize(struct btrfs_super_block *s,
s->blocksize = cpu_to_le16(val);
}
+/* helper function to cast into the data area of the leaf. */
+#define btrfs_item_ptr(leaf, slot, type) \
+ ((type *)((leaf)->data + btrfs_item_offset((leaf)->items + (slot))))
+
struct btrfs_buffer *btrfs_alloc_free_block(struct btrfs_root *root);
int btrfs_inc_ref(struct btrfs_root *root, struct btrfs_buffer *buf);
int btrfs_free_extent(struct btrfs_root *root, u64 blocknr, u64 num_blocks);
diff --git a/extent-tree.c b/extent-tree.c
index 7f156d9b..3767744f 100644
--- a/extent-tree.c
+++ b/extent-tree.c
@@ -41,9 +41,7 @@ static int inc_block_ref(struct btrfs_root *root, u64 blocknr)
BUG();
BUG_ON(ret != 0);
l = &path.nodes[0]->leaf;
- item = (struct btrfs_extent_item *)(l->data +
- btrfs_item_offset(l->items +
- path.slots[0]));
+ item = btrfs_item_ptr(l, path.slots[0], struct btrfs_extent_item);
refs = btrfs_extent_refs(item);
btrfs_set_extent_refs(item, refs + 1);
@@ -69,9 +67,7 @@ static int lookup_block_ref(struct btrfs_root *root, u64 blocknr, u32 *refs)
if (ret != 0)
BUG();
l = &path.nodes[0]->leaf;
- item = (struct btrfs_extent_item *)(l->data +
- btrfs_item_offset(l->items +
- path.slots[0]));
+ item = btrfs_item_ptr(l, path.slots[0], struct btrfs_extent_item);
*refs = btrfs_extent_refs(item);
btrfs_release_path(root->extent_root, &path);
return 0;
diff --git a/print-tree.c b/print-tree.c
index 64829b6b..e769f36c 100644
--- a/print-tree.c
+++ b/print-tree.c
@@ -26,11 +26,10 @@ void btrfs_print_leaf(struct btrfs_leaf *l)
btrfs_item_size(item));
printf("\t\titem data %.*s\n", btrfs_item_size(item),
l->data + btrfs_item_offset(item));
- ei = (struct btrfs_extent_item *)(l->data +
- btrfs_item_offset(item));
+ ei = btrfs_item_ptr(l, i, struct btrfs_extent_item);
printf("\t\textent data refs %u owner %Lu\n",
btrfs_extent_refs(ei), btrfs_extent_owner(ei));
- ri = (struct btrfs_root_item *)ei;
+ ri = btrfs_item_ptr(l, i, struct btrfs_root_item);
printf("\t\troot data blocknr %Lu refs %u\n",
btrfs_root_blocknr(ri), btrfs_root_refs(ri));
fflush(stdout);