mirror of
https://github.com/torvalds/linux.git
synced 2024-11-22 12:11:40 +00:00
maple_tree: remove mas_searchable()
Now that the status of the maple state is outside of the node, the mas_searchable() function can be dropped for easier open-coding of what is going on. Link: https://lkml.kernel.org/r/20231101171629.3612299-10-Liam.Howlett@oracle.com Signed-off-by: Liam R. Howlett <Liam.Howlett@oracle.com> Cc: Peng Zhang <zhangpeng.00@bytedance.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
067311d33e
commit
9a40d45c1f
@ -285,17 +285,6 @@ static inline bool mas_is_underflow(struct ma_state *mas)
|
||||
return mas->status == ma_underflow;
|
||||
}
|
||||
|
||||
static inline bool mas_searchable(struct ma_state *mas)
|
||||
{
|
||||
if (mas_is_none(mas))
|
||||
return false;
|
||||
|
||||
if (mas_is_ptr(mas))
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static __always_inline struct maple_node *mte_to_node(
|
||||
const struct maple_enode *entry)
|
||||
{
|
||||
@ -6030,12 +6019,11 @@ static __always_inline bool mas_find_setup(struct ma_state *mas, unsigned long m
|
||||
|
||||
}
|
||||
|
||||
if (unlikely(!mas_searchable(mas))) {
|
||||
if (unlikely(mas_is_ptr(mas)))
|
||||
goto ptr_out_of_range;
|
||||
if (unlikely(mas_is_ptr(mas)))
|
||||
goto ptr_out_of_range;
|
||||
|
||||
if (unlikely(mas_is_none(mas)))
|
||||
return true;
|
||||
}
|
||||
|
||||
if (mas->index == max)
|
||||
return true;
|
||||
@ -6162,20 +6150,18 @@ static bool mas_find_rev_setup(struct ma_state *mas, unsigned long min,
|
||||
return true;
|
||||
}
|
||||
|
||||
if (unlikely(!mas_searchable(mas))) {
|
||||
if (mas_is_ptr(mas))
|
||||
goto none;
|
||||
if (unlikely(mas_is_ptr(mas)))
|
||||
goto none;
|
||||
|
||||
if (mas_is_none(mas)) {
|
||||
/*
|
||||
* Walked to the location, and there was nothing so the
|
||||
* previous location is 0.
|
||||
*/
|
||||
mas->last = mas->index = 0;
|
||||
mas->status = ma_root;
|
||||
*entry = mas_root(mas);
|
||||
return true;
|
||||
}
|
||||
if (unlikely(mas_is_none(mas))) {
|
||||
/*
|
||||
* Walked to the location, and there was nothing so the previous
|
||||
* location is 0.
|
||||
*/
|
||||
mas->last = mas->index = 0;
|
||||
mas->status = ma_root;
|
||||
*entry = mas_root(mas);
|
||||
return true;
|
||||
}
|
||||
|
||||
active:
|
||||
@ -6905,7 +6891,7 @@ retry:
|
||||
if (entry)
|
||||
goto unlock;
|
||||
|
||||
while (mas_searchable(&mas) && (mas.last < max)) {
|
||||
while (mas_is_active(&mas) && (mas.last < max)) {
|
||||
entry = mas_next_entry(&mas, max);
|
||||
if (likely(entry && !xa_is_zero(entry)))
|
||||
break;
|
||||
@ -6987,26 +6973,6 @@ unsigned int mt_nr_allocated(void)
|
||||
return kmem_cache_nr_allocated(maple_node_cache);
|
||||
}
|
||||
|
||||
/*
|
||||
* mas_dead_node() - Check if the maple state is pointing to a dead node.
|
||||
* @mas: The maple state
|
||||
* @index: The index to restore in @mas.
|
||||
*
|
||||
* Used in test code.
|
||||
* Return: 1 if @mas has been reset to MAS_START, 0 otherwise.
|
||||
*/
|
||||
static inline int mas_dead_node(struct ma_state *mas, unsigned long index)
|
||||
{
|
||||
if (unlikely(!mas_searchable(mas) || mas_is_start(mas)))
|
||||
return 0;
|
||||
|
||||
if (likely(!mte_dead_node(mas->node)))
|
||||
return 0;
|
||||
|
||||
mas_rewalk(mas, index);
|
||||
return 1;
|
||||
}
|
||||
|
||||
void mt_cache_shrink(void)
|
||||
{
|
||||
}
|
||||
@ -7558,7 +7524,7 @@ void mt_validate(struct maple_tree *mt)
|
||||
MA_STATE(mas, mt, 0, 0);
|
||||
rcu_read_lock();
|
||||
mas_start(&mas);
|
||||
if (!mas_searchable(&mas))
|
||||
if (!mas_is_active(&mas))
|
||||
goto done;
|
||||
|
||||
while (!mte_is_leaf(mas.node))
|
||||
|
@ -974,8 +974,10 @@ retry:
|
||||
if (likely(mas->offset != MAPLE_NODE_SLOTS))
|
||||
entry = mas_get_slot(mas, mas->offset);
|
||||
|
||||
if (mas_dead_node(mas, index))
|
||||
if (mas_is_active(mas) && mte_dead_node(mas->node)) {
|
||||
mas_set(mas, index);
|
||||
goto retry;
|
||||
}
|
||||
|
||||
return entry;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user