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;
|
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(
|
static __always_inline struct maple_node *mte_to_node(
|
||||||
const struct maple_enode *entry)
|
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)))
|
||||||
if (unlikely(mas_is_ptr(mas)))
|
goto ptr_out_of_range;
|
||||||
goto ptr_out_of_range;
|
|
||||||
|
|
||||||
|
if (unlikely(mas_is_none(mas)))
|
||||||
return true;
|
return true;
|
||||||
}
|
|
||||||
|
|
||||||
if (mas->index == max)
|
if (mas->index == max)
|
||||||
return true;
|
return true;
|
||||||
@ -6162,20 +6150,18 @@ static bool mas_find_rev_setup(struct ma_state *mas, unsigned long min,
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (unlikely(!mas_searchable(mas))) {
|
if (unlikely(mas_is_ptr(mas)))
|
||||||
if (mas_is_ptr(mas))
|
goto none;
|
||||||
goto none;
|
|
||||||
|
|
||||||
if (mas_is_none(mas)) {
|
if (unlikely(mas_is_none(mas))) {
|
||||||
/*
|
/*
|
||||||
* Walked to the location, and there was nothing so the
|
* Walked to the location, and there was nothing so the previous
|
||||||
* previous location is 0.
|
* location is 0.
|
||||||
*/
|
*/
|
||||||
mas->last = mas->index = 0;
|
mas->last = mas->index = 0;
|
||||||
mas->status = ma_root;
|
mas->status = ma_root;
|
||||||
*entry = mas_root(mas);
|
*entry = mas_root(mas);
|
||||||
return true;
|
return true;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
active:
|
active:
|
||||||
@ -6905,7 +6891,7 @@ retry:
|
|||||||
if (entry)
|
if (entry)
|
||||||
goto unlock;
|
goto unlock;
|
||||||
|
|
||||||
while (mas_searchable(&mas) && (mas.last < max)) {
|
while (mas_is_active(&mas) && (mas.last < max)) {
|
||||||
entry = mas_next_entry(&mas, max);
|
entry = mas_next_entry(&mas, max);
|
||||||
if (likely(entry && !xa_is_zero(entry)))
|
if (likely(entry && !xa_is_zero(entry)))
|
||||||
break;
|
break;
|
||||||
@ -6987,26 +6973,6 @@ unsigned int mt_nr_allocated(void)
|
|||||||
return kmem_cache_nr_allocated(maple_node_cache);
|
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)
|
void mt_cache_shrink(void)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
@ -7558,7 +7524,7 @@ void mt_validate(struct maple_tree *mt)
|
|||||||
MA_STATE(mas, mt, 0, 0);
|
MA_STATE(mas, mt, 0, 0);
|
||||||
rcu_read_lock();
|
rcu_read_lock();
|
||||||
mas_start(&mas);
|
mas_start(&mas);
|
||||||
if (!mas_searchable(&mas))
|
if (!mas_is_active(&mas))
|
||||||
goto done;
|
goto done;
|
||||||
|
|
||||||
while (!mte_is_leaf(mas.node))
|
while (!mte_is_leaf(mas.node))
|
||||||
|
@ -974,8 +974,10 @@ retry:
|
|||||||
if (likely(mas->offset != MAPLE_NODE_SLOTS))
|
if (likely(mas->offset != MAPLE_NODE_SLOTS))
|
||||||
entry = mas_get_slot(mas, mas->offset);
|
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;
|
goto retry;
|
||||||
|
}
|
||||||
|
|
||||||
return entry;
|
return entry;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user