Commit 8e010b3d authored by Christoph Hellwig's avatar Christoph Hellwig Committed by David Sterba

btrfs: remove the zoned/zone_size union in struct btrfs_fs_info

Reading a value from a different member of a union is not just a great
way to obfuscate code, but also creates an aliasing violation.  Switch
btrfs_is_zoned to look at ->zone_size and remove the union.

Note: union was to simplify the detection of zoned filesystem but now
this is wrapped behind btrfs_is_zoned so we can drop the union.
Reviewed-by: default avatarJohannes Thumshirn <johannes.thumshirn@wdc.com>
Reviewed-by: default avatarNaohiro Aota <naohiro.aota@wdc.com>
Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
[ add note ]
Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
parent 8aa1e49e
...@@ -1045,10 +1045,7 @@ struct btrfs_fs_info { ...@@ -1045,10 +1045,7 @@ struct btrfs_fs_info {
* Zone size > 0 when in ZONED mode, otherwise it's used for a check * Zone size > 0 when in ZONED mode, otherwise it's used for a check
* if the mode is enabled * if the mode is enabled
*/ */
union {
u64 zone_size; u64 zone_size;
u64 zoned;
};
struct mutex zoned_meta_io_lock; struct mutex zoned_meta_io_lock;
spinlock_t treelog_bg_lock; spinlock_t treelog_bg_lock;
...@@ -4010,7 +4007,7 @@ static inline int btrfs_is_testing(struct btrfs_fs_info *fs_info) ...@@ -4010,7 +4007,7 @@ static inline int btrfs_is_testing(struct btrfs_fs_info *fs_info)
static inline bool btrfs_is_zoned(const struct btrfs_fs_info *fs_info) static inline bool btrfs_is_zoned(const struct btrfs_fs_info *fs_info)
{ {
return fs_info->zoned != 0; return fs_info->zone_size > 0;
} }
static inline bool btrfs_is_data_reloc_root(const struct btrfs_root *root) static inline bool btrfs_is_data_reloc_root(const struct btrfs_root *root)
......
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