On 9.06.20 г. 13:19 ч., fdmanana@xxxxxxxxxx wrote: > From: Filipe Manana <fdmanana@xxxxxxxx> > > We currently use btrfs_check_data_free_space() when allocating space for > relocating data extents, but that is not necessary because that function > combines btrfs_alloc_data_chunk_ondemand(), which does the actual space > reservation, and btrfs_qgroup_reserve_data(). > > We can use btrfs_alloc_data_chunk_ondemand() directly because we know we > do not need to reserve qgroup space since we are dealing with a relocation > tree, which can never have qgroups (btrfs_qgroup_reserve_data() does > nothing as is_fstree() returns false for a relocation tree). > > Conversely we can use btrfs_free_reserved_data_space_noquota() directly > instead of btrfs_free_reserved_data_space(), since we had no qgroup > reservation when allocating space. > > This change is preparatory work for another patch in this series that > makes relocation reserve the exact amount of space it needs to relocate > a data block group. The function btrfs_check_data_free_space() has > the incovenient of requiring a start offset argument and we will want to > be able to allocate space for multiple ranges, which are not consecutive, > at once. > > Signed-off-by: Filipe Manana <fdmanana@xxxxxxxx> Reviewed-by: Nikolay Borisov <nborisov@xxxxxxxx>
