btrfs: avoid unnecessary next node searches when clearing bits from extent range
authorFilipe Manana <fdmanana@suse.com>
Wed, 16 Apr 2025 14:24:48 +0000 (15:24 +0100)
committerDavid Sterba <dsterba@suse.com>
Thu, 15 May 2025 12:30:51 +0000 (14:30 +0200)
commit240dd0e1bbe57fdcaaf7aede4b35d47ebf32dd48
tree759a6ae9446eaa1330d00e818218a556a6e2b652
parent3bf179e36da917c5d9bec71c714573ed1649b7c1
btrfs: avoid unnecessary next node searches when clearing bits from extent range

When clearing bits for a range in an io tree, at clear_state_bit(), we
always go search for the next node (through next_state() -> rb_next()) and
return it. However if the current extent state record ends at or after the
target range passed to btrfs_clear_extent_bit_changeset() or
btrfs_convert_extent_bit(), we are just wasting time finding that next
node since we won't use it in those functions.

Improve on this by skipping the next node search if the current node ends
at or after the target range.

Reviewed-by: Boris Burkov <boris@bur.io>
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