Commit c08782da authored by David Sterba's avatar David Sterba

btrfs: fix structs where bitfields and spinlock/atomic share 8B word

On ia64, powerpc64 and sparc64 the bitfield is modified through a RMW cycle and current
gcc rewrites the adjacent 4B word, which in case of a spinlock or atomic has
disaterous effect.

https://lkml.org/lkml/2012/2/1/220Signed-off-by: default avatarDavid Sterba <dsterba@suse.cz>
parent 87826df0
...@@ -886,7 +886,7 @@ struct btrfs_block_rsv { ...@@ -886,7 +886,7 @@ struct btrfs_block_rsv {
u64 reserved; u64 reserved;
struct btrfs_space_info *space_info; struct btrfs_space_info *space_info;
spinlock_t lock; spinlock_t lock;
unsigned int full:1; unsigned int full;
}; };
/* /*
......
...@@ -26,8 +26,8 @@ struct extent_map { ...@@ -26,8 +26,8 @@ struct extent_map {
unsigned long flags; unsigned long flags;
struct block_device *bdev; struct block_device *bdev;
atomic_t refs; atomic_t refs;
unsigned int in_tree:1; unsigned int in_tree;
unsigned int compress_type:4; unsigned int compress_type;
}; };
struct extent_map_tree { struct extent_map_tree {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment