On Tue, Jun 09, 2020 at 11:19:42AM +0100, 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. Patches 1 and 2 are ok, 3/3 is supposed to be dropped so I'll add only the two. Thanks.
