Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

radix tree test suite: Add test for radix_tree_clear_tags()

Assert that radix_tree_clear_tags() clears the tags on the passed node and
slot. Assert that the case where the radix tree has only one entry at index
zero and the node is NULL, is also handled.

Signed-off-by: Rehas Sachdeva <aquannie@gmail.com>
Signed-off-by: Matthew Wilcox <mawilcox@microsoft.com>

authored by

Rehas Sachdeva and committed by
Matthew Wilcox
c629a344 166bb1f5

+29
+29
tools/testing/radix-tree/tag_check.c
··· 330 330 item_kill_tree(&tree); 331 331 } 332 332 333 + void radix_tree_clear_tags_test(void) 334 + { 335 + unsigned long index; 336 + struct radix_tree_node *node; 337 + struct radix_tree_iter iter; 338 + void **slot; 339 + 340 + RADIX_TREE(tree, GFP_KERNEL); 341 + 342 + item_insert(&tree, 0); 343 + item_tag_set(&tree, 0, 0); 344 + __radix_tree_lookup(&tree, 0, &node, &slot); 345 + radix_tree_clear_tags(&tree, node, slot); 346 + assert(item_tag_get(&tree, 0, 0) == 0); 347 + 348 + for (index = 0; index < 1000; index++) { 349 + item_insert(&tree, index); 350 + item_tag_set(&tree, index, 0); 351 + } 352 + 353 + radix_tree_for_each_slot(slot, &tree, &iter, 0) { 354 + radix_tree_clear_tags(&tree, iter.node, slot); 355 + assert(item_tag_get(&tree, iter.index, 0) == 0); 356 + } 357 + 358 + item_kill_tree(&tree); 359 + } 360 + 333 361 void tag_check(void) 334 362 { 335 363 single_check(); ··· 375 347 thrash_tags(); 376 348 rcu_barrier(); 377 349 printv(2, "after thrash_tags: %d allocated\n", nr_allocated); 350 + radix_tree_clear_tags_test(); 378 351 }