Commit 30002ed2e41830ec03ec3e577ad83ac6b188f96e
Committed by
Linus Torvalds
1 parent
652ea69536
Exists in
master
and in
20 other branches
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: Nick 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: Peter Zijlstra <a.p.zijlstra@chello.nl> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Showing 1 changed file with 3 additions and 3 deletions Side-by-side Diff
mm/readahead.c
... | ... | @@ -382,9 +382,9 @@ |
382 | 382 | if (hit_readahead_marker) { |
383 | 383 | pgoff_t start; |
384 | 384 | |
385 | - read_lock_irq(&mapping->tree_lock); | |
386 | - start = radix_tree_next_hole(&mapping->page_tree, offset, max+1); | |
387 | - read_unlock_irq(&mapping->tree_lock); | |
385 | + rcu_read_lock(); | |
386 | + start = radix_tree_next_hole(&mapping->page_tree, offset,max+1); | |
387 | + rcu_read_unlock(); | |
388 | 388 | |
389 | 389 | if (!start || start - offset > max) |
390 | 390 | return 0; |