The patch titled Subject: maple_tree: break on convergence in mas_spanning_rebalance() has been added to the -mm mm-unstable branch. Its filename is maple_tree-break-on-convergence-in-mas_spanning_rebalance.patch This patch will shortly appear at https://git.kernel.org/pub/scm/linux/kernel/git/akpm/25-new.git/tree/patches/maple_tree-break-on-convergence-in-mas_spanning_rebalance.patch This patch will later appear in the mm-unstable branch at git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's *** Remember to use Documentation/process/submit-checklist.rst when testing your code *** The -mm tree is included into linux-next via the mm-everything branch at git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm and is updated there every 2-3 working days ------------------------------------------------------ From: Sidhartha Kumar <sidhartha.kumar@xxxxxxxxxx> Subject: maple_tree: break on convergence in mas_spanning_rebalance() Date: Thu, 27 Feb 2025 20:48:21 +0000 This allows support for using the vacant height to calculate the worst case number of nodes needed for wr_rebalance operation. mas_spanning_rebalance() was seen to perform unnecessary node allocations. We can reduce allocations by breaking early during the rebalancing loop once we realize that we have ascended to a common ancestor. Link: https://lkml.kernel.org/r/20250227204823.758784-5-sidhartha.kumar@xxxxxxxxxx Signed-off-by: Sidhartha Kumar <sidhartha.kumar@xxxxxxxxxx> Suggested-by: Liam Howlett <liam.howlett@xxxxxxxxxx> Reviewed-by: Wei Yang <richard.weiyang@xxxxxxxxx> Reviewed-by: Liam R. Howlett <Liam.Howlett@xxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- lib/maple_tree.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) --- a/lib/maple_tree.c~maple_tree-break-on-convergence-in-mas_spanning_rebalance +++ a/lib/maple_tree.c @@ -2895,11 +2895,24 @@ static void mas_spanning_rebalance(struc mast_combine_cp_right(mast); mast->orig_l->last = mast->orig_l->max; - if (mast_sufficient(mast)) - continue; + if (mast_sufficient(mast)) { + if (mast_overflow(mast)) + continue; + + if (mast->orig_l->node == mast->orig_r->node) { + /* + * The data in b_node should be stored in one + * node and in the tree + */ + slot = mast->l->offset; + /* May be a new root stored in mast->bn */ + if (mas_is_root_limits(mast->orig_l)) + new_height++; + break; + } - if (mast_overflow(mast)) continue; + } /* May be a new root stored in mast->bn */ if (mas_is_root_limits(mast->orig_l)) { _ Patches currently in -mm which might be from sidhartha.kumar@xxxxxxxxxx are maple_tree-convert-mas_prealloc_calc-to-take-in-a-maple-write-state.patch maple_tree-use-height-and-depth-consistently.patch maple_tree-use-vacant-nodes-to-reduce-worst-case-allocations.patch maple_tree-break-on-convergence-in-mas_spanning_rebalance.patch maple_tree-add-sufficient-height.patch maple_tree-reorder-mas-store_type-case-statements.patch