radix-tree: delete radix_tree_range_tag_if_tagged()
This is an exceptionally complicated function with just one caller (tag_pages_for_writeback). We devote a large portion of the runtime of the test suite to testing this one function which has one caller. By introducing the new function radix_tree_iter_tag_set(), we can eliminate all of the complexity while keeping the performance. The caller can now use a fairly standard radix_tree_for_each() loop, and it doesn't need to worry about tricksy things like 'start' wrapping. The test suite continues to spend a large amount of time investigating this function, but now it's testing the underlying primitives such as radix_tree_iter_resume() and the radix_tree_for_each_tagged() iterator which are also used by other parts of the kernel. Link: http://lkml.kernel.org/r/1480369871-5271-57-git-send-email-mawilcox@linuxonhyperv.com Signed-off-by: Matthew Wilcox <willy@infradead.org> Tested-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com> Cc: Konstantin Khlebnikov <koct9i@gmail.com> Cc: Ross Zwisler <ross.zwisler@linux.intel.com> Cc: Matthew Wilcox <mawilcox@microsoft.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
committed by
Linus Torvalds
parent
478922e2b0
commit
268f42de71
@@ -50,6 +50,7 @@
|
||||
#include <stdio.h>
|
||||
|
||||
#include "regression.h"
|
||||
#include "test.h"
|
||||
|
||||
#define PAGECACHE_TAG_DIRTY 0
|
||||
#define PAGECACHE_TAG_WRITEBACK 1
|
||||
@@ -90,7 +91,7 @@ void regression2_test(void)
|
||||
/* 1. */
|
||||
start = 0;
|
||||
end = max_slots - 2;
|
||||
radix_tree_range_tag_if_tagged(&mt_tree, &start, end, 1,
|
||||
tag_tagged_items(&mt_tree, NULL, start, end, 1,
|
||||
PAGECACHE_TAG_DIRTY, PAGECACHE_TAG_TOWRITE);
|
||||
|
||||
/* 2. */
|
||||
|
||||
Reference in New Issue
Block a user