Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c50d3e71 authored by Filipe Manana's avatar Filipe Manana Committed by Chris Mason
Browse files

Btrfs: more efficient io tree navigation on wait_extent_bit



If we don't reschedule use rb_next to find the next extent state
instead of a full tree search, which is more efficient and safe
since we didn't release the io tree's lock.

Signed-off-by: default avatarFilipe David Borba Manana <fdmanana@gmail.com>
Signed-off-by: default avatarChris Mason <clm@fb.com>
parent c715e155
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -749,6 +749,7 @@ static void wait_extent_bit(struct extent_io_tree *tree, u64 start, u64 end,
		 * our range starts
		 */
		node = tree_search(tree, start);
process_node:
		if (!node)
			break;

@@ -769,7 +770,10 @@ static void wait_extent_bit(struct extent_io_tree *tree, u64 start, u64 end,
		if (start > end)
			break;

		cond_resched_lock(&tree->lock);
		if (!cond_resched_lock(&tree->lock)) {
			node = rb_next(node);
			goto process_node;
		}
	}
out:
	spin_unlock(&tree->lock);