linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 00/36] Maple tree mas_{next,prev}_range() and cleanup
@ 2023-05-05 17:41 Liam R. Howlett
  2023-05-05 17:41 ` [PATCH v2 01/36] maple_tree: Fix static analyser cppcheck issue Liam R. Howlett
                   ` (35 more replies)
  0 siblings, 36 replies; 46+ messages in thread
From: Liam R. Howlett @ 2023-05-05 17:41 UTC (permalink / raw)
  To: Andrew Morton; +Cc: maple-tree, linux-mm, linux-kernel, Liam R. Howlett

This patch set contains a number of clean ups to the code to make it
more usable (next/prev range), the addition of debug output formatting,
the addition of printing the maple state information in the
WARN_ON/BUG_ON code.

There is also work done here to keep nodes active during iterations to
reduce the necessity of re-walking the tree.

Finally, there is a new interface added to move to the next or previous
range in the tree, even if it is empty.

The organisation of the patches is as follows:

0001-0004 - Small clean ups
0005-0018 - Additional debug options and WARN_ON/BUG_ON changes
0019      - Test module __init and __exit addition
0020-0021 - More functional clean ups
0022-0026 - Changes to keep nodes active
0027-0034 - Add new mas_{prev,next}_range()
0035      - Use new mas_{prev,next}_range() in mmap_region()
0036      - Fix testing code of alloc_rev_range() testcase.

Changes since v1:
 - Changed mas_parent_enum() to mas_parent_type() - Thanks Peng Zhang
 - Fix the test code working without debug. - Thanks kernel test robot
   <lkp@intel.com> 
 - Change vma_iter_store() debug log to one line - Thanks Sergey
   Senozhatsky 
 - Change mas_walk() to return entry instead of mas_root() to avoid
   potential RCU issue. - Thanks Peng Zhang
 - Added fix for testing of mas_empty_area.
 - Added check for underflow to mas_prev_slot() - Thanks Peng Zhang
 - Fixed compile issue in mas_next_slot() interface patch - Thanks
   kernel test robot <lkp@intel.com>
 - Removed extra check in mas_next_node() - Thanks Peng Zhang
 - Added missing T's to commit message in two patchs - Thanks Petr
   Tesařík
 - Fix the change to the do_vmi_align_munmap() function to work with the
   new iterator - Thanks kernel test robot <yujie.liu@intel.com>
 - Fix the testing of mas_{prev,next}_range() undeclared function names
   - Thanks kernel test robot <lkp@intel.com>
 - Fix typo in testing code of mas_{prev,next,walk} - Thanks Peng Zhang


v1: https://lore.kernel.org/linux-mm/20230425140955.3834476-1-Liam.Howlett@oracle.com/ 

Liam R. Howlett (36):
  maple_tree: Fix static analyser cppcheck issue
  maple_tree: Clean up mas_parent_enum() and rename to mas_parent_type()
  maple_tree: Avoid unnecessary ascending
  maple_tree: Clean up mas_dfs_postorder()
  maple_tree: Add format option to mt_dump()
  maple_tree: Add debug BUG_ON and WARN_ON variants
  maple_tree: Convert BUG_ON() to MT_BUG_ON()
  maple_tree: Change RCU checks to WARN_ON() instead of BUG_ON()
  maple_tree: Convert debug code to use MT_WARN_ON() and MAS_WARN_ON()
  maple_tree: Use MAS_BUG_ON() when setting a leaf node as a parent
  maple_tree: Use MAS_BUG_ON() in mas_set_height()
  maple_tree: Use MAS_BUG_ON() from mas_topiary_range()
  maple_tree: Use MAS_WR_BUG_ON() in mas_store_prealloc()
  maple_tree: Use MAS_BUG_ON() prior to calling mas_meta_gap()
  maple_tree: Return error on mte_pivots() out of range
  maple_tree: Make test code work without debug enabled
  mm: Update validate_mm() to use vma iterator
  mm: Update vma_iter_store() to use MAS_WARN_ON()
  maple_tree: Add __init and __exit to test module
  maple_tree: Remove unnecessary check from mas_destroy()
  maple_tree: mas_start() reset depth on dead node
  mm/mmap: Change do_vmi_align_munmap() for maple tree iterator changes
  maple_tree: Try harder to keep active node after mas_next()
  maple_tree: Try harder to keep active node with mas_prev()
  maple_tree: Revise limit checks in mas_empty_area{_rev}()
  maple_tree: Fix testing mas_empty_area()
  maple_tree: Introduce mas_next_slot() interface
  maple_tree: Add mas_next_range() and mas_find_range() interfaces
  maple_tree: Relocate mas_rewalk() and mas_rewalk_if_dead()
  maple_tree: Introduce mas_prev_slot() interface
  maple_tree: Add mas_prev_range() and mas_find_range_rev interface
  maple_tree: Clear up index and last setting in single entry tree
  maple_tree: Update testing code for mas_{next,prev,walk}
  mm: Add vma_iter_{next,prev}_range() to vma iterator
  mm: Avoid rewalk in mmap_region
  maple_tree: Add gap to check_alloc_rev_range() testcase

 include/linux/maple_tree.h            |  129 ++-
 include/linux/mm.h                    |   13 +
 include/linux/mmdebug.h               |   14 +
 lib/Kconfig.debug                     |   10 +-
 lib/maple_tree.c                      | 1175 ++++++++++++++-----------
 lib/test_maple_tree.c                 |  863 +++++++++++++++---
 mm/debug.c                            |    9 +
 mm/internal.h                         |   26 +-
 mm/mmap.c                             |  111 ++-
 tools/testing/radix-tree/linux/init.h |    1 +
 tools/testing/radix-tree/maple.c      |  164 ++--
 11 files changed, 1760 insertions(+), 755 deletions(-)

-- 
2.39.2


^ permalink raw reply	[flat|nested] 46+ messages in thread

end of thread, other threads:[~2023-05-12 17:30 UTC | newest]

Thread overview: 46+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-05-05 17:41 [PATCH v2 00/36] Maple tree mas_{next,prev}_range() and cleanup Liam R. Howlett
2023-05-05 17:41 ` [PATCH v2 01/36] maple_tree: Fix static analyser cppcheck issue Liam R. Howlett
2023-05-05 17:41 ` [PATCH v2 02/36] maple_tree: Clean up mas_parent_enum() and rename to mas_parent_type() Liam R. Howlett
2023-05-05 17:41 ` [PATCH v2 03/36] maple_tree: Avoid unnecessary ascending Liam R. Howlett
2023-05-05 17:41 ` [PATCH v2 04/36] maple_tree: Clean up mas_dfs_postorder() Liam R. Howlett
2023-05-05 17:41 ` [PATCH v2 05/36] maple_tree: Add format option to mt_dump() Liam R. Howlett
2023-05-05 17:41 ` [PATCH v2 06/36] maple_tree: Add debug BUG_ON and WARN_ON variants Liam R. Howlett
2023-05-05 17:41 ` [PATCH v2 07/36] maple_tree: Convert BUG_ON() to MT_BUG_ON() Liam R. Howlett
2023-05-05 17:41 ` [PATCH v2 08/36] maple_tree: Change RCU checks to WARN_ON() instead of BUG_ON() Liam R. Howlett
2023-05-05 17:41 ` [PATCH v2 09/36] maple_tree: Convert debug code to use MT_WARN_ON() and MAS_WARN_ON() Liam R. Howlett
2023-05-05 17:41 ` [PATCH v2 10/36] maple_tree: Use MAS_BUG_ON() when setting a leaf node as a parent Liam R. Howlett
2023-05-05 17:41 ` [PATCH v2 11/36] maple_tree: Use MAS_BUG_ON() in mas_set_height() Liam R. Howlett
2023-05-05 17:41 ` [PATCH v2 12/36] maple_tree: Use MAS_BUG_ON() from mas_topiary_range() Liam R. Howlett
2023-05-05 17:41 ` [PATCH v2 13/36] maple_tree: Use MAS_WR_BUG_ON() in mas_store_prealloc() Liam R. Howlett
2023-05-05 17:41 ` [PATCH v2 14/36] maple_tree: Use MAS_BUG_ON() prior to calling mas_meta_gap() Liam R. Howlett
2023-05-05 17:41 ` [PATCH v2 15/36] maple_tree: Return error on mte_pivots() out of range Liam R. Howlett
2023-05-05 17:41 ` [PATCH v2 16/36] maple_tree: Make test code work without debug enabled Liam R. Howlett
2023-05-05 17:41 ` [PATCH v2 17/36] mm: Update validate_mm() to use vma iterator Liam R. Howlett
2023-05-05 17:41 ` [PATCH v2 18/36] mm: Update vma_iter_store() to use MAS_WARN_ON() Liam R. Howlett
2023-05-06  2:42   ` Sergey Senozhatsky
2023-05-06  2:47   ` Sergey Senozhatsky
2023-05-05 17:41 ` [PATCH v2 19/36] maple_tree: Add __init and __exit to test module Liam R. Howlett
2023-05-05 17:41 ` [PATCH v2 20/36] maple_tree: Remove unnecessary check from mas_destroy() Liam R. Howlett
2023-05-05 17:41 ` [PATCH v2 21/36] maple_tree: mas_start() reset depth on dead node Liam R. Howlett
2023-05-05 17:41 ` [PATCH v2 22/36] mm/mmap: Change do_vmi_align_munmap() for maple tree iterator changes Liam R. Howlett
2023-05-05 17:41 ` [PATCH v2 23/36] maple_tree: Try harder to keep active node after mas_next() Liam R. Howlett
2023-05-05 17:41 ` [PATCH v2 24/36] maple_tree: Try harder to keep active node with mas_prev() Liam R. Howlett
2023-05-05 17:41 ` [PATCH v2 25/36] maple_tree: Revise limit checks in mas_empty_area{_rev}() Liam R. Howlett
2023-05-05 17:41 ` [PATCH v2 26/36] maple_tree: Fix testing mas_empty_area() Liam R. Howlett
2023-05-05 17:41 ` [PATCH v2 27/36] maple_tree: Introduce mas_next_slot() interface Liam R. Howlett
2023-05-05 17:41 ` [PATCH v2 28/36] maple_tree: Add mas_next_range() and mas_find_range() interfaces Liam R. Howlett
2023-05-05 17:41 ` [PATCH v2 29/36] maple_tree: Relocate mas_rewalk() and mas_rewalk_if_dead() Liam R. Howlett
2023-05-05 17:41 ` [PATCH v2 30/36] maple_tree: Introduce mas_prev_slot() interface Liam R. Howlett
2023-05-05 17:41 ` [PATCH v2 31/36] maple_tree: Add mas_prev_range() and mas_find_range_rev interface Liam R. Howlett
2023-05-08 13:26   ` Vernon Yang
2023-05-08 16:11     ` Liam R. Howlett
2023-05-05 17:42 ` [PATCH v2 32/36] maple_tree: Clear up index and last setting in single entry tree Liam R. Howlett
2023-05-09 12:39   ` Peng Zhang
2023-05-12 15:54     ` Liam R. Howlett
2023-05-12 17:29       ` Liam R. Howlett
2023-05-05 17:42 ` [PATCH v2 33/36] maple_tree: Update testing code for mas_{next,prev,walk} Liam R. Howlett
2023-05-05 17:42 ` [PATCH v2 34/36] mm: Add vma_iter_{next,prev}_range() to vma iterator Liam R. Howlett
2023-05-05 17:42 ` [PATCH v2 35/36] mm: Avoid rewalk in mmap_region Liam R. Howlett
2023-05-05 17:42 ` [PATCH v2 36/36] maple_tree: Add gap to check_alloc_rev_range() testcase Liam R. Howlett
2023-05-05 19:29   ` Liam R. Howlett
2023-05-05 19:57     ` Andrew Morton

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).