]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
test_maple_tree: Add new function to allow __GFP_DIRECT_RECLAIM gfp for
authorLiam R. Howlett <Liam.Howlett@Oracle.com>
Thu, 10 Jan 2019 19:06:51 +0000 (14:06 -0500)
committerLiam R. Howlett <Liam.Howlett@Oracle.com>
Wed, 31 Jul 2019 14:52:35 +0000 (10:52 -0400)
a given number of times.

Set a variable that allows reclaims to occur for a specific count for
testing.

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
lib/maple_tree.c
lib/test_maple_tree.c
tools/testing/radix-tree/linux.c

index e2586362caaa565645d345f0c5402509ba8c2030..79c86ce57544186a6ac7cd20a11a2e685eac44ce 100644 (file)
@@ -937,4 +937,8 @@ void mt_dump(const struct maple_tree *mt)
        else
                mt_dump_node(entry, 0, mt_max[mt_node_type(entry)], 0);
 }
+void mt_set_non_kernel(unsigned int val)
+{
+       kmem_cache_set_non_kernel(maple_node_cache, val);
+}
 #endif
index b3dbdcd51db2f5c19163962e9fec034ebc2513b4..922cf0b0b2ad186654ef4e7af18b8948e042b957 100644 (file)
@@ -322,8 +322,10 @@ static int maple_tree_seed(void)
        check_load(&tree, set[1], &tree);
        check_load(&tree, set[2], ptr);
        check_load(&tree, set[3], &tree);
+       mt_set_non_kernel(1);
        check_erase(&tree, set[1]);
        check_load(&tree, set[1], NULL);
+
        return 0;
        check_insert(&tree, set[4], ptr); // 1000 < Should split.
        check_load(&tree, set[0], ptr);
index 4128aab15b13b8dce65daaea9386fe873c42679f..62bf900413a97153a27597c307dc0568c430f987 100644 (file)
@@ -24,15 +24,24 @@ struct kmem_cache {
        int nr_objs;
        void *objs;
        void (*ctor)(void *);
+       unsigned int non_kernel;
 };
 
+void kmem_cache_set_non_kernel(struct kmem_cache *cachep, unsigned int val)
+{
+       cachep->non_kernel = val;
+}
+
 void *kmem_cache_alloc(struct kmem_cache *cachep, int gfp)
 {
        void *p;
 
-       if (!(gfp & __GFP_DIRECT_RECLAIM))
+       if (!(gfp & __GFP_DIRECT_RECLAIM) && !cachep->non_kernel)
                return NULL;
 
+       if (!(gfp & __GFP_DIRECT_RECLAIM))
+               cachep->non_kernel--;
+
        pthread_mutex_lock(&cachep->lock);
        if (cachep->nr_objs) {
                struct radix_tree_node *node = cachep->objs;