mas_wr_walk_traverse(wr_mas);
}
}
+
/*
* mas_extend_spanning_null() - Extend a store of a %NULL to include surrounding %NULLs.
* @l_wr_mas: The left maple write state
unsigned char new_end = mas_wr_new_end(wr_mas);
switch (mas->store_type) {
- case wr_invalid:
- MT_BUG_ON(mas->tree, 1);
- return;
- case wr_new_root:
- mas_new_root(mas, wr_mas->entry);
+ case wr_slot_store:
+ mas_wr_slot_store(wr_mas);
break;
- case wr_store_root:
- mas_store_root(mas, wr_mas->entry);
+ case wr_node_store:
+ mas_wr_node_store(wr_mas, new_end);
+ break;
+ case wr_split_store:
+ mas_wr_split(wr_mas);
+ break;
+ case wr_rebalance:
+ mas_wr_bnode(wr_mas);
break;
case wr_exact_fit:
rcu_assign_pointer(wr_mas->slots[mas->offset], wr_mas->entry);
if (!!wr_mas->entry ^ !!wr_mas->content)
mas_update_gap(mas);
break;
- case wr_append:
- mas_wr_append(wr_mas, new_end);
+ case wr_new_root:
+ mas_new_root(mas, wr_mas->entry);
break;
- case wr_slot_store:
- mas_wr_slot_store(wr_mas);
+ case wr_store_root:
+ mas_store_root(mas, wr_mas->entry);
break;
- case wr_node_store:
- mas_wr_node_store(wr_mas, new_end);
+ case wr_append:
+ mas_wr_append(wr_mas, new_end);
break;
case wr_spanning_store:
mas_wr_spanning_store(wr_mas);
break;
- case wr_split_store:
- mas_wr_split(wr_mas);
- break;
- case wr_rebalance:
- mas_wr_bnode(wr_mas);
- break;
+ case wr_invalid:
+ MT_BUG_ON(mas->tree, 1);
+ return;
}
return;
int ret = mas_mt_height(mas) * 3 + 1;
switch (mas->store_type) {
- case wr_invalid:
- WARN_ON_ONCE(1);
+ case wr_node_store:
+ ret = mt_in_rcu(mas->tree) ? 1 : 0;
+ break;
+ case wr_split_store:
+ ret = mas_mt_height(mas) * 2 + 1;
+ break;
+ case wr_rebalance:
+ ret = mas_mt_height(mas) * 2 - 1;
+ break;
+ case wr_append:
+ case wr_exact_fit:
+ case wr_slot_store:
+ ret = 0;
break;
case wr_new_root:
ret = 1;
case wr_spanning_store:
ret = mas_mt_height(mas) * 3 + 1;
break;
- case wr_split_store:
- ret = mas_mt_height(mas) * 2 + 1;
- break;
- case wr_rebalance:
- ret = mas_mt_height(mas) * 2 - 1;
- break;
- case wr_node_store:
- ret = mt_in_rcu(mas->tree) ? 1 : 0;
+ case wr_invalid:
+ WARN_ON_ONCE(1);
break;
- case wr_append:
- case wr_exact_fit:
- case wr_slot_store:
- ret = 0;
}
return ret;
static inline enum store_type mas_wr_store_type(struct ma_wr_state *wr_mas)
{
struct ma_state *mas = wr_mas->mas;
- unsigned char new_end;
+ int new_end;
if (unlikely(mas_is_none(mas) || mas_is_ptr(mas)))
return wr_store_root;