diff options
author | 2025-07-16 16:59:53 +0900 | |
---|---|---|
committer | 2025-08-13 12:28:48 +0200 | |
commit | daa0fde322350b467bc62bc1b141bf62df6123f8 (patch) | |
tree | e931f398d6e587e81693905d260fcee0be1ac010 /rust/pin-init/internal/src | |
parent | btrfs: zoned: skip ZONE FINISH of conventional zones (diff) | |
download | wireguard-linux-daa0fde322350b467bc62bc1b141bf62df6123f8.tar.xz wireguard-linux-daa0fde322350b467bc62bc1b141bf62df6123f8.zip |
btrfs: zoned: fix data relocation block group reservation
btrfs_zoned_reserve_data_reloc_bg() is called on mount and at that point,
all data block groups belong to the primary data space_info. So, we don't
find anything in the data relocation space_info.
Also, the condition "bg->used > 0" can select a block group with full of
zone_unusable bytes for the candidate. As we cannot allocate from the block
group, it is useless to reserve it as the data relocation block group.
Furthermore, because of the space_info separation, we need to migrate the
selected block group to the data relocation space_info. If not, the extent
allocator cannot use the block group to do the allocation.
This commit fixes these three issues.
Fixes: e606ff985ec7 ("btrfs: zoned: reserve data_reloc block group on mount")
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Signed-off-by: Naohiro Aota <naohiro.aota@wdc.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Diffstat (limited to 'rust/pin-init/internal/src')
0 files changed, 0 insertions, 0 deletions