srcu: Add cleanup_srcu_struct_quiesced()
authorPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Fri, 6 Apr 2018 00:19:17 +0000 (17:19 -0700)
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Tue, 15 May 2018 17:27:56 +0000 (10:27 -0700)
commitf7194ac32ca241d28765a98e42a7fe13debc85a7
tree788cdde1d2f7abe01e14b37004e89734cc642835
parent17672480fb1e953f999623b598a98130f8aacfbc
srcu: Add cleanup_srcu_struct_quiesced()

The current cleanup_srcu_struct() flushes work, which prevents it
from being invoked from some workqueue contexts, as well as from
atomic (non-blocking) contexts.  This patch therefore introduced a
cleanup_srcu_struct_quiesced(), which can be invoked only after all
activity on the specified srcu_struct has completed.  This restriction
allows cleanup_srcu_struct_quiesced() to be invoked from workqueue
contexts as well as from atomic contexts.

Suggested-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Tested-by: Nitzan Carmi <nitzanc@mellanox.com>
Tested-by: Nicholas Piggin <npiggin@gmail.com>
include/linux/srcu.h
kernel/rcu/rcutorture.c
kernel/rcu/srcutiny.c
kernel/rcu/srcutree.c