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

Commit 30002ed2 authored by Nick Piggin's avatar Nick Piggin Committed by Linus Torvalds
Browse files

mm: readahead scan lockless



radix_tree_next_hole() is implemented as a series of radix_tree_lookup()s.
So it can be called locklessly, under rcu_read_lock().

Signed-off-by: default avatarNick Piggin <npiggin@suse.de>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Hugh Dickins <hugh@veritas.com>
Cc: "Paul E. McKenney" <paulmck@us.ibm.com>
Reviewed-by: default avatarPeter Zijlstra <a.p.zijlstra@chello.nl>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 652ea695
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -382,9 +382,9 @@ ondemand_readahead(struct address_space *mapping,
	if (hit_readahead_marker) {
		pgoff_t start;

		read_lock_irq(&mapping->tree_lock);
		rcu_read_lock();
		start = radix_tree_next_hole(&mapping->page_tree, offset,max+1);
		read_unlock_irq(&mapping->tree_lock);
		rcu_read_unlock();

		if (!start || start - offset > max)
			return 0;