• Sidhartha Kumar's avatar
    maple_tree: introduce mas_wr_store_type() · 5d659bbb
    Sidhartha Kumar authored
    Introduce mas_wr_store_type() which will set the correct store type based
    on a walk of the tree.  In mas_wr_node_store() the <= min_slots condition
    is changed to < as if new_end is = to mt_min_slots then there is not
    enough room.
    
    mas_prealloc_calc() is also introduced to abstract the calculation used to
    determine the number of nodes needed for a store operation.
    
    In this change a call to mas_reset() is removed in the error case of
    mas_prealloc().  This is only needed in the MA_STATE_REBALANCE case of
    mas_destroy().  We can move the call to mas_reset() directly to
    mas_destroy().
    
    Also, add a test case to validate the order that we check the store type
    in is correct.  This test models a vma expanding and then shrinking which
    is part of the boot process.
    
    Link: https://lkml.kernel.org/r/20240814161944.55347-5-sidhartha.kumar@oracle.comSigned-off-by: default avatarSidhartha Kumar <sidhartha.kumar@oracle.com>
    Cc: Liam R. Howlett <Liam.Howlett@oracle.com>
    Cc: Matthew Wilcox (Oracle) <willy@infradead.org>
    Cc: Suren Baghdasaryan <surenb@google.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    5d659bbb
maple_tree.c 195 KB