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/220 Signed-off-by: David Sterba <dsterba@suse.cz>
This commit is contained in:
parent
87826df0ec
commit
c08782dacd
|
@ -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 {
|
||||||
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 {
|
||||||
|
|
Loading…
Reference in a new issue