radix tree test suite: add item_delete_rcu()
authorRoss Zwisler <[email protected]>
Fri, 18 May 2018 23:08:58 +0000 (16:08 -0700)
committerLinus Torvalds <[email protected]>
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/[email protected]
Signed-off-by: Ross Zwisler <[email protected]>
Cc: Christoph Hellwig <[email protected]>
Cc: CR, Sapthagirish <[email protected]>
Cc: Dan Williams <[email protected]>
Cc: Dave Chinner <[email protected]>
Cc: Jan Kara <[email protected]>
Cc: Matthew Wilcox <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
tools/testing/radix-tree/test.c
tools/testing/radix-tree/test.h