From: Liam Howlett <liam.howlett@oracle.com>
To: "maple-tree@lists.infradead.org" <maple-tree@lists.infradead.org>,
"linux-mm@kvack.org" <linux-mm@kvack.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
Andrew Morton <akpm@linux-foundation.org>
Subject: [PATCH v9 03/69] radix tree test suite: add kmem_cache_set_non_kernel()
Date: Wed, 4 May 2022 01:07:42 +0000 [thread overview]
Message-ID: <20220504010716.661115-5-Liam.Howlett@oracle.com> (raw)
In-Reply-To: <20220504010716.661115-1-Liam.Howlett@oracle.com>
From: "Liam R. Howlett" <Liam.Howlett@Oracle.com>
kmem_cache_set_non_kernel() is a mechanism to allow a certain number of
kmem_cache_alloc requests to succeed even when GFP_KERNEL is not set in
the flags. This functionality allows for testing different paths though
the code.
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
---
tools/testing/radix-tree/linux.c | 16 ++++++++++++++--
1 file changed, 14 insertions(+), 2 deletions(-)
diff --git a/tools/testing/radix-tree/linux.c b/tools/testing/radix-tree/linux.c
index d5c1bcba86fe..277aa8b70abc 100644
--- a/tools/testing/radix-tree/linux.c
+++ b/tools/testing/radix-tree/linux.c
@@ -23,15 +23,26 @@ 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_lru(struct kmem_cache *cachep, struct list_lru *lru,
int gfp)
+
{
void *p;
- if (!(gfp & __GFP_DIRECT_RECLAIM))
- return NULL;
+ if (!(gfp & __GFP_DIRECT_RECLAIM)) {
+ if (!cachep->non_kernel)
+ return NULL;
+
+ cachep->non_kernel--;
+ }
pthread_mutex_lock(&cachep->lock);
if (cachep->nr_objs) {
@@ -90,5 +101,6 @@ kmem_cache_create(const char *name, unsigned int size, unsigned int align,
ret->nr_objs = 0;
ret->objs = NULL;
ret->ctor = ctor;
+ ret->non_kernel = 0;
return ret;
}
--
2.35.1
next prev parent reply other threads:[~2022-05-04 1:07 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-05-04 1:07 [PATCH v9 00/69] Maple Tree v9 Liam Howlett
2022-05-04 1:07 ` Liam Howlett
2022-05-04 1:07 ` [PATCH v9 01/69] Maple Tree: add new data structure Liam Howlett
2022-05-04 1:07 ` [PATCH v9 02/69] radix tree test suite: add pr_err define Liam Howlett
2022-05-04 1:07 ` [PATCH v9 04/69] radix tree test suite: add allocation counts and size to kmem_cache Liam Howlett
2022-05-04 1:07 ` Liam Howlett [this message]
2022-05-04 1:07 ` [PATCH v9 06/69] radix tree test suite: add lockdep_is_held to header Liam Howlett
2022-05-04 1:07 ` [PATCH v9 05/69] radix tree test suite: add support for slab bulk APIs Liam Howlett
2022-05-04 1:07 ` [PATCH v9 07/69] lib/test_maple_tree: add testing for maple tree Liam Howlett
2022-05-04 1:07 ` [PATCH v9 09/69] mm: add VMA iterator Liam Howlett
2022-05-04 1:07 ` [PATCH v9 10/69] mmap: use the VMA iterator in count_vma_pages_range() Liam Howlett
2022-05-04 1:07 ` [PATCH v9 08/69] mm: start tracking VMAs with maple tree Liam Howlett
2022-05-10 10:37 ` SeongJae Park
2022-05-10 15:51 ` Liam Howlett
2022-05-10 16:58 ` Liam Howlett
2022-05-12 17:01 ` Qian Cai
2022-05-12 17:50 ` Liam Howlett
2022-06-06 12:26 ` Qian Cai
2022-06-06 16:16 ` Liam Howlett
2022-06-06 16:42 ` Qian Cai
2022-05-04 1:07 ` [PATCH v9 11/69] mm/mmap: use the maple tree in find_vma() instead of the rbtree Liam Howlett
2022-05-04 1:07 ` [PATCH v9 13/69] mm/mmap: use maple tree for unmapped_area{_topdown} Liam Howlett
2022-05-04 1:07 ` [PATCH v9 12/69] mm/mmap: use the maple tree for find_vma_prev() instead of the rbtree Liam Howlett
2022-05-04 1:07 ` [PATCH v9 14/69] kernel/fork: use maple tree for dup_mmap() during forking Liam Howlett
2022-05-06 2:25 ` [PATCH v9 00/69] Maple Tree v9 Andrew Morton
2022-05-09 18:55 ` Liam Howlett
2022-05-09 20:02 ` Andrew Morton
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220504010716.661115-5-Liam.Howlett@oracle.com \
--to=liam.howlett@oracle.com \
--cc=akpm@linux-foundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=maple-tree@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox