radix tree test suite: add item_delete_rcu()
authorRoss Zwisler <ross.zwisler@linux.intel.com>
Fri, 18 May 2018 23:08:58 +0000 (16:08 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sat, 19 May 2018 00:17:12 +0000 (17:17 -0700)
commit3e252fa7d4f711798e7a3f5ff2d7b62f0e2987ce
tree37f3020acab7655b6db8f04c434e2a7094ac4691
parentdcbbf25adb31410c95ce844f80d372ed38b68b24
radix tree test suite: add item_delete_rcu()

Currently the lifetime of "struct item" entries in the radix tree are
not controlled by RCU, but are instead deleted inline as they are
removed from the tree.

In the following patches we add a test which has threads iterating over
items pulled from the tree and verifying them in an
rcu_read_lock()/rcu_read_unlock() section.  This means that though an
item has been removed from the tree it could still be being worked on by
other threads until the RCU grace period expires.  So, we need to
actually free the "struct item" structures at the end of the grace
period, just as we do with "struct radix_tree_node" items.

Link: http://lkml.kernel.org/r/20180503192430.7582-4-ross.zwisler@linux.intel.com
Signed-off-by: Ross Zwisler <ross.zwisler@linux.intel.com>
Cc: Christoph Hellwig <hch@lst.de>
Cc: CR, Sapthagirish <sapthagirish.cr@intel.com>
Cc: Dan Williams <dan.j.williams@intel.com>
Cc: Dave Chinner <david@fromorbit.com>
Cc: Jan Kara <jack@suse.cz>
Cc: Matthew Wilcox <willy@infradead.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
tools/testing/radix-tree/test.c
tools/testing/radix-tree/test.h