btrfs: avoid re-searching tree when setting bits in an extent range
authorFilipe Manana <fdmanana@suse.com>
Thu, 17 Apr 2025 12:03:42 +0000 (13:03 +0100)
committerDavid Sterba <dsterba@suse.com>
Thu, 15 May 2025 12:30:52 +0000 (14:30 +0200)
commitaa2c80a9ae279578acbb5f5674e7345199d8173b
tree6ffee922d3a7a426e749f2b5caaff6b1da9fac17
parentb61dd9b1cb9caf0cb3caddd9af868a786883d8a7
btrfs: avoid re-searching tree when setting bits in an extent range

When setting bits for an extent range (set_extent_bit()), if the current
extent state record starts after the target range, we always do a jump to
the 'search_again' label, which will cause us to do a full tree search for
the next state if the current state ends before the target range. Unless
we need to reschedule, we can just grab the next state and process it,
avoiding a full tree search, even if that next state is not contiguous, as
we'll allocate and insert a new prealloc state if needed.

Signed-off-by: Filipe Manana <fdmanana@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/extent-io-tree.c