On Wed, Aug 14, 2024 at 12:19:31PM -0400, Sidhartha Kumar wrote: Sorry for a late reply, I just see this change. >+ >+/* >+ * mas_wr_store_type() - Set the store type for a given >+ * store operation. >+ * @wr_mas: The maple write state >+ */ >+static inline void mas_wr_store_type(struct ma_wr_state *wr_mas) >+{ >+ struct ma_state *mas = wr_mas->mas; >+ unsigned char new_end; >+ >+ if (unlikely(mas_is_none(mas) || mas_is_ptr(mas))) { >+ mas->store_type = wr_store_root; >+ return; >+ } >+ >+ if (unlikely(!mas_wr_walk(wr_mas))) { >+ mas->store_type = wr_spanning_store; >+ return; >+ } >+ >+ /* At this point, we are at the leaf node that needs to be altered. */ >+ mas_wr_end_piv(wr_mas); >+ if (!wr_mas->entry) >+ mas_wr_extend_null(wr_mas); >+ >+ new_end = mas_wr_new_end(wr_mas); >+ if ((wr_mas->r_min == mas->index) && (wr_mas->r_max == mas->last)) { >+ mas->store_type = wr_exact_fit; >+ return; >+ } >+ >+ if (unlikely(!mas->index && mas->last == ULONG_MAX)) { >+ mas->store_type = wr_new_root; >+ return; >+ } >+ >+ /* Potential spanning rebalance collapsing a node */ >+ if (new_end < mt_min_slots[wr_mas->type]) { >+ if (!mte_is_root(mas->node)) { >+ mas->store_type = wr_rebalance; >+ return; >+ } >+ mas->store_type = wr_node_store; >+ return; >+ } After this check, we are sure new_end >= mt_min_slots[wr_mas->type]. >+ >+ if (new_end >= mt_slots[wr_mas->type]) { >+ mas->store_type = wr_split_store; >+ return; >+ } >+ >+ if (!mt_in_rcu(mas->tree) && (mas->offset == mas->end)) { >+ mas->store_type = wr_append; >+ return; >+ } >+ >+ if ((new_end == mas->end) && (!mt_in_rcu(mas->tree) || >+ (wr_mas->offset_end - mas->offset == 1))) { >+ mas->store_type = wr_slot_store; >+ return; >+ } >+ >+ if (mte_is_root(mas->node) || (new_end >= mt_min_slots[wr_mas->type]) || >+ (mas->mas_flags & MA_STATE_BULK)) { The check (new_end >= mt_min_slots[wr_mas->type]) here seems always be true. So the if here seems not necessary. Do I miss something? >+ mas->store_type = wr_node_store; >+ return; >+ } >+ >+ mas->store_type = wr_invalid; >+ MAS_WARN_ON(mas, 1); >+} >+ -- Wei Yang Help you, Help me