]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
tools/testing/radix-tree: test maple tree chaining mas_preallocate() calls
authorLiam R. Howlett <Liam.Howlett@oracle.com>
Mon, 16 Jun 2025 18:45:21 +0000 (14:45 -0400)
committerAndrew Morton <akpm@linux-foundation.org>
Thu, 10 Jul 2025 05:42:12 +0000 (22:42 -0700)
Testing calling multiple mas_preallocate() calls in a row after adjusting
the maple state.  Ensures new calls to mas_preallocate() will change the
number of allocated nodes.

Link: https://lkml.kernel.org/r/20250616184521.3382795-4-Liam.Howlett@oracle.com
Signed-off-by: Liam R. Howlett <Liam.Howlett@oracle.com>
Acked-by: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
Cc: Hailong Liu <hailong.liu@oppo.com>
Cc: "Liam R. Howlett" <howlett@gmail.com>
Cc: Matthew Wilcox (Oracle) <willy@infradead.org>
Cc: Peng Zhang <zhangpeng.00@bytedance.com>
Cc: Sidhartha Kumar <sidhartha.kumar@oracle.com>
Cc: Suren Baghdasaryan <surenb@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
tools/testing/radix-tree/maple.c

index f6f923c9dc1039997953a94ec184c560b225c2d4..172700fb7784d29f9403003b4484a5ebd7aa316b 100644 (file)
@@ -35669,6 +35669,18 @@ static noinline void __init check_prealloc(struct maple_tree *mt)
        allocated = mas_allocated(&mas);
        height = mas_mt_height(&mas);
        MT_BUG_ON(mt, allocated != 0);
+
+       /* Chaining multiple preallocations */
+       mt_set_in_rcu(mt);
+       mas_set_range(&mas, 800, 805); /* Slot store, should be 0 allocations */
+       MT_BUG_ON(mt, mas_preallocate(&mas, ptr, GFP_KERNEL) != 0);
+       allocated = mas_allocated(&mas);
+       MT_BUG_ON(mt, allocated != 0);
+       mas.last = 809; /* Node store */
+       MT_BUG_ON(mt, mas_preallocate(&mas, ptr, GFP_KERNEL) != 0);
+       allocated = mas_allocated(&mas);
+       MT_BUG_ON(mt, allocated != 1);
+       mas_store_prealloc(&mas, ptr);
 }
 /* End of preallocation testing */