[Btrfs-devel] [PATCH 1/2] Make btrfs-progs compile with
-fstrict-aliasing (included in -O2) again.
Jan Engelhardt
jengelh at computergmbh.de
Thu Sep 13 10:10:50 PDT 2007
From: Jan Engelhardt <jengelh at computergmbh.de>
Make btrfs-progs compile with -fstrict-aliasing (included in -O2) again.
This is done by doing a two-step conversion (rather than a one-step).
First, the variable goes from type * to void *, and then to
implicitly to void **.
(Not sure if this is "good practice", but it shuts up the compiler,
so it seems the compiler takes into account that we are actually punning
it this way.)
---
bit-radix.c | 2 +-
btrfsck.c | 2 +-
extent-tree.c | 10 +++++-----
radix-tree.c | 2 +-
4 files changed, 8 insertions(+), 8 deletions(-)
Index: btrfs-progs-0.8/bit-radix.c
===================================================================
--- btrfs-progs-0.8.orig/bit-radix.c
+++ btrfs-progs-0.8/bit-radix.c
@@ -186,7 +186,7 @@ int find_first_radix_bit(struct radix_tr
unsigned long slot;
slot = start / BIT_RADIX_BITS_PER_ARRAY;
- ret = radix_tree_gang_lookup(radix, (void **)gang, slot,
+ ret = radix_tree_gang_lookup(radix, (void *)gang, slot,
ARRAY_SIZE(gang));
found = start % BIT_RADIX_BITS_PER_ARRAY;
for (i = 0; i < ret && nr > 0; i++) {
Index: btrfs-progs-0.8/btrfsck.c
===================================================================
--- btrfs-progs-0.8.orig/btrfsck.c
+++ btrfs-progs-0.8/btrfsck.c
@@ -413,7 +413,7 @@ int check_extent_refs(struct btrfs_root
int err = 0;
while(1) {
- ret = radix_tree_gang_lookup(extent_radix, (void **)rec, 0,
+ ret = radix_tree_gang_lookup(extent_radix, (void *)rec, 0,
ARRAY_SIZE(rec));
if (!ret)
break;
Index: btrfs-progs-0.8/extent-tree.c
===================================================================
--- btrfs-progs-0.8.orig/extent-tree.c
+++ btrfs-progs-0.8/extent-tree.c
@@ -164,7 +164,7 @@ int btrfs_write_dirty_block_groups(struc
btrfs_init_path(&path);
while(1) {
- ret = radix_tree_gang_lookup_tag(radix, (void **)cache,
+ ret = radix_tree_gang_lookup_tag(radix, (void *)cache,
0, ARRAY_SIZE(cache),
BTRFS_BLOCK_GROUP_DIRTY);
if (!ret)
@@ -195,7 +195,7 @@ static int update_block_group(struct btr
while(total) {
ret = radix_tree_gang_lookup(&info->block_group_radix,
- (void **)&cache, blocknr, 1);
+ (void *)&cache, blocknr, 1);
if (!ret)
return -1;
radix_tree_tag_set(&info->block_group_radix,
@@ -229,7 +229,7 @@ int btrfs_finish_extent_commit(struct bt
while(1) {
ret = radix_tree_gang_lookup(&root->fs_info->pinned_radix,
- (void **)gang, 0,
+ (void *)gang, 0,
ARRAY_SIZE(gang));
if (!ret)
break;
@@ -362,7 +362,7 @@ static int del_pending_extents(struct bt
while(1) {
ret = radix_tree_gang_lookup_tag(
&extent_root->fs_info->cache_radix,
- (void **)gang, 0,
+ (void *)gang, 0,
ARRAY_SIZE(gang),
CTREE_EXTENT_PENDING_DEL);
if (!ret)
@@ -738,7 +738,7 @@ int btrfs_free_block_groups(struct btrfs
while(1) {
ret = radix_tree_gang_lookup(&info->block_group_radix,
- (void **)cache, 0,
+ (void *)cache, 0,
ARRAY_SIZE(cache));
if (!ret)
break;
Index: btrfs-progs-0.8/radix-tree.c
===================================================================
--- btrfs-progs-0.8.orig/radix-tree.c
+++ btrfs-progs-0.8/radix-tree.c
@@ -314,7 +314,7 @@ static inline void **__lookup_slot(struc
return NULL;
if (height == 0 && root->rnode)
- return (void **)&root->rnode;
+ return (void *)&root->rnode;
shift = (height-1) * RADIX_TREE_MAP_SHIFT;
slot = &root->rnode;
More information about the Btrfs-devel
mailing list