Message ID | cover.1647936783.git.naohiro.aota@wdc.com (mailing list archive) |
---|---|
Headers | show |
Series | btrfs: zoned: activate new BG only from extent allocation context | expand |
On 22/03/2022 10:11, Naohiro Aota wrote: > In btrfs_make_block_group(), we activate the allocated block group, > expecting that the block group is soon used for the extent allocation. > > With a lot of IOs, btrfs_async_reclaim_data_space() tries to prepare > for them by pre-allocating data block groups. That preallocation can > consume all the active zone counting. It is OK if they are soon > written and filled. However, that's not the case. As a result, an > allocation of non-data block groups fails due to the lack of an active > zone resource. > > This series fixes the issue by activating a new block group only when > it's called from find_free_extent(). This series introduces > CHUNK_ALLOC_FORCE_FOR_EXTENT in btrfs_chunk_alloc_enum to distinguish > the context. > > -- > Changes > - v2 > - Fix a flipped condition > > Naohiro Aota (2): > btrfs: return allocated block group from do_chunk_alloc() > btrfs: zoned: activate block group only for extent allocation > > fs/btrfs/block-group.c | 36 +++++++++++++++++++++++++++--------- > fs/btrfs/block-group.h | 1 + > fs/btrfs/extent-tree.c | 2 +- > 3 files changed, 29 insertions(+), 10 deletions(-) > For the series, Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com> Tested-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
On Tue, Mar 22, 2022 at 06:11:32PM +0900, Naohiro Aota wrote: > In btrfs_make_block_group(), we activate the allocated block group, > expecting that the block group is soon used for the extent allocation. > > With a lot of IOs, btrfs_async_reclaim_data_space() tries to prepare > for them by pre-allocating data block groups. That preallocation can > consume all the active zone counting. It is OK if they are soon > written and filled. However, that's not the case. As a result, an > allocation of non-data block groups fails due to the lack of an active > zone resource. > > This series fixes the issue by activating a new block group only when > it's called from find_free_extent(). This series introduces > CHUNK_ALLOC_FORCE_FOR_EXTENT in btrfs_chunk_alloc_enum to distinguish > the context. > > -- > Changes > - v2 > - Fix a flipped condition > > Naohiro Aota (2): > btrfs: return allocated block group from do_chunk_alloc() > btrfs: zoned: activate block group only for extent allocation Added to misc-next, thanks.