rcu: Add a fast-readers variant of SRCU
Dave Hansen's testing of single-byte I/O to tmpfs showed significant
system-level overhead from the memory barriers in srcu_read_lock()
and srcu_read_unlock().
This experimental not-for-merging commit therefore re-introduces the old
variant of SRCU that avoided read-side memory barriers. This of course
also introduces that variant's slow grace periods. There is no analog
to call_rcu(), nor is there an analog to rcu_barrier(), so this is not a
drop-in replacement for SRCU. Unlike SRCU, this implementation cannot
be invoked from idle or offline CPUs. This variant therefore gets its
own API: frsrcu_read_lock(), frsrcu_read_unlock(), and so on.
Reported-by: Dave Hansen <dave@sr71.net>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
7 files changed