]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
maple_tree: Remove unused functions and rename mas_store_entry to mas_wr_store_entry
authorLiam R. Howlett <Liam.Howlett@oracle.com>
Thu, 25 Nov 2021 19:07:55 +0000 (14:07 -0500)
committerLiam R. Howlett <Liam.Howlett@oracle.com>
Thu, 25 Nov 2021 19:07:55 +0000 (14:07 -0500)
Signed-off-by: Liam R. Howlett <Liam.Howlett@oracle.com>
lib/maple_tree.c

index 152c3a5af82b2612973ef9fe62f96aded2d0cbdd..a903dd9e0acfa93a1c5aa68b9ebd8b472d22d7ea 100644 (file)
@@ -3751,7 +3751,7 @@ done:
  *
  * Return: 0 on error, positive on success.
  */
-static inline int mas_spanning_store(struct ma_wr_state *wr_mas)
+static inline int mas_wr_spanning_store(struct ma_wr_state *wr_mas)
 {
        struct maple_subtree_state mast;
        struct maple_big_node b_node;
@@ -3820,14 +3820,8 @@ static inline int mas_spanning_store(struct ma_wr_state *wr_mas)
 }
 
 /*
- * mas_node_store() - Attempt to store the value in a node
- * @mas: The maple state
- * @entry: The value to store
- * @min: The minimum of the range
- * @max: The maximum of the range
- * @mt: The maple node type
- * @slots: Pointer to the slot array
- * @pivots: Pointer to the pivot array
+ * mas_wr_node_store() - Attempt to store the value in a node
+ * @wr_mas: The maple write state
  *
  * Attempts to reuse the node, but may allocate.
  *
@@ -3942,139 +3936,16 @@ done:
                mas->node = mt_mk_node(newnode, wr_mas->type);
                mas_replace(mas, false);
        } else {
-               memcpy(mas_mn(mas), newnode, sizeof(struct maple_node));
+               memcpy(wr_mas->node, newnode, sizeof(struct maple_node));
        }
        trace_ma_write(__func__, mas, 0, wr_mas->entry);
        mas_update_gap(mas);
        return true;
 }
 
-static inline bool mas_node_store(struct ma_state *mas, void *entry,
-                                 unsigned long min, unsigned long max,
-                                 unsigned char end, void *content,
-                                 enum maple_type mt, void __rcu **slots,
-                                 unsigned long *pivots, unsigned char offset_end)
-{
-       void __rcu **dst_slots;
-       unsigned long *dst_pivots;
-       unsigned char dst_offset;
-       unsigned char new_end = end;
-       unsigned char offset;
-       struct maple_node reuse, *newnode;
-       unsigned char copy_size, max_piv = mt_pivots[mt];
-
-       offset = mas->offset;
-       if (mas->last == max) {
-               /* runs right to the end of the node */
-               if (mas->last == mas->max)
-                       new_end = offset;
-               /* don't copy this offset */
-               offset_end++;
-       } else if (mas->last < max) {
-               /* new range ends in this range */
-               if (unlikely(max == ULONG_MAX))
-                       mas_bulk_rebalance(mas, end, mt);
-
-               new_end++;
-       } else {
-               if (mas_safe_pivot(mas, pivots, offset_end, mt) == mas->last)
-                       offset_end++;
-
-               new_end -= offset_end - offset - 1;
-       }
-
-       /* new range starts within a range */
-       if (min < mas->index)
-               new_end++;
-
-       /* Not enough room */
-       if (new_end >= mt_slots[mt])
-               return false;
-
-       /* Not enough data. */
-       if (!mte_is_root(mas->node) && (new_end <= mt_min_slots[mt]) &&
-           !(mas->mas_flags & MA_STATE_BULK))
-               return false;
-
-       /* set up node. */
-       if (mt_in_rcu(mas->tree)) {
-               mas_node_count(mas, 1);
-               if (mas_is_err(mas))
-                       return false;
-
-               newnode = mas_pop_node(mas);
-       } else {
-               memset(&reuse, 0, sizeof(struct maple_node));
-               newnode = &reuse;
-       }
-
-       newnode->parent = mas_mn(mas)->parent;
-       dst_pivots = ma_pivots(newnode, mt);
-       dst_slots = ma_slots(newnode, mt);
-       /* Copy from start to insert point */
-       memcpy(dst_pivots, pivots, sizeof(unsigned long) * (offset + 1));
-       memcpy(dst_slots, slots, sizeof(void *) * (offset + 1));
-       dst_offset = offset;
-
-       /* Handle insert of new range starting after old range */
-       if (min < mas->index) {
-               mas->offset++;
-               rcu_assign_pointer(dst_slots[dst_offset], content);
-               dst_pivots[dst_offset++] = mas->index - 1;
-       }
-
-       /* Store the new entry and range end. */
-       if (dst_offset < max_piv)
-               dst_pivots[dst_offset] = mas->last;
-       mas->offset = dst_offset;
-       rcu_assign_pointer(dst_slots[dst_offset++], entry);
-
-       /* this range wrote to the end of the node. */
-       if (offset_end > end)
-               goto done;
-
-       /* Copy to the end of node if necessary. */
-       copy_size = end - offset_end + 1;
-       memcpy(dst_slots + dst_offset, slots + offset_end,
-              sizeof(void *) * copy_size);
-       if (dst_offset < max_piv) {
-               if (copy_size > max_piv - dst_offset)
-                       copy_size = max_piv - dst_offset;
-               memcpy(dst_pivots + dst_offset, pivots + offset_end,
-                      sizeof(unsigned long) * copy_size);
-       }
-
-done:
-       if ((end == mt_slots[mt] - 1) && (new_end < mt_slots[mt] - 1))
-               dst_pivots[new_end] = mas->max;
-
-       if (!dst_pivots[mt_pivots[mt] - 1] || dst_pivots[mt_pivots[mt] - 1] == mas->max) {
-               if (dst_pivots[new_end] && dst_pivots[new_end] < mas->max)
-                       new_end++;
-               ma_set_meta(newnode, maple_leaf_64, 0, new_end);
-       }
-
-       if (mt_in_rcu(mas->tree)) {
-               mas->node = mt_mk_node(newnode, mt);
-               mas_replace(mas, false);
-       } else {
-               memcpy(mas_mn(mas), newnode, sizeof(struct maple_node));
-       }
-       trace_ma_write(__func__, mas, 0, entry);
-       mas_update_gap(mas);
-       return true;
-}
-
 /*
- * mas_slot_store: Attempt to store a value in a slot.
- * @mas: the maple state
- * @entry: The entry to store
- * @min: The range minimum
- * @max: The range maximum
- * @end: The end of the maple node
- * @content: The current content
- * @mt: The maple node type
- * @slots: The pointer to the slots array
+ * mas_wr_slot_store: Attempt to store a value in a slot.
+ * @wr_mas: the maple write state
  *
  * Return: True if stored, false otherwise
  */
@@ -4127,58 +3998,6 @@ done:
        return true;
 }
 
-static inline bool mas_slot_store(struct ma_state *mas, void *entry,
-                                 unsigned long min, unsigned long max,
-                                 unsigned long end_piv,
-                                 unsigned char end, void *content,
-                                 enum maple_type mt, void __rcu **slots)
-{
-       struct maple_node *node = mas_mn(mas);
-       unsigned long *pivots = ma_pivots(node, mt);
-       unsigned long lmax; /* Logical max. */
-       unsigned char offset = mas->offset;
-
-       if ((max > mas->last) && ((min != mas->index) || (offset != end)))
-               return false;
-
-       if (offset == end - 1)
-               lmax = mas->max;
-       else
-               lmax = pivots[offset + 1];
-
-       /* going to overwrite too many slots. */
-       if (lmax < mas->last)
-               return false;
-
-       if (min == mas->index) {
-               /* overwriting two or more ranges with one. */
-               if (lmax == mas->last)
-                       return false;
-
-               /* Overwriting all of offset and a portion of offset + 1. */
-               rcu_assign_pointer(slots[offset], entry);
-               pivots[offset] = mas->last;
-               goto done;
-       }
-
-       /* Doesn't end on the next range end. */
-       if (lmax != mas->last)
-               return false;
-
-       /* Overwriting a portion of offset and all of offset + 1 */
-       if ((offset + 1 < mt_pivots[mt]) && (entry || pivots[offset + 1]))
-                       pivots[offset + 1] = mas->last;
-
-       rcu_assign_pointer(slots[offset + 1], entry);
-       pivots[offset] = mas->index - 1;
-       mas->offset++; /* Keep mas accurate. */
-
-done:
-       trace_ma_write(__func__, mas, 0, entry);
-       mas_update_gap(mas);
-       return true;
-}
-
 static inline void mas_wr_end_piv(struct ma_wr_state *wr_mas)
 {
        while ((wr_mas->mas->last > wr_mas->end_piv) &&
@@ -4234,8 +4053,7 @@ static inline bool mas_wr_append(struct ma_wr_state *wr_mas)
                        wr_mas->pivots[new_end] = wr_mas->pivots[end];
 
                if (new_end < node_pivots)
-                       ma_set_meta(mas_mn(mas), maple_leaf_64, 0,
-                                   new_end);
+                       ma_set_meta(wr_mas->node, maple_leaf_64, 0, new_end);
 
                rcu_assign_pointer(wr_mas->slots[new_end], wr_mas->entry);
                mas->offset = new_end;
@@ -4248,8 +4066,7 @@ static inline bool mas_wr_append(struct ma_wr_state *wr_mas)
 
                rcu_assign_pointer(wr_mas->slots[new_end], wr_mas->content);
                if (new_end < node_pivots)
-                       ma_set_meta(mas_mn(mas), maple_leaf_64, 0,
-                                   new_end);
+                       ma_set_meta(wr_mas->node, maple_leaf_64, 0, new_end);
 
                wr_mas->pivots[end] = mas->last;
                rcu_assign_pointer(wr_mas->slots[end], wr_mas->entry);
@@ -4307,13 +4124,13 @@ slow_path:
 }
 
 /*
- * mas_store_entry() - Internal call to store a value
+ * mas_wr_store_entry() - Internal call to store a value
  * @mas: The maple state
  * @entry: The entry to store.
  *
  * Return: The contents that was stored at the index.
  */
-static inline void *mas_store_entry(struct ma_wr_state *wr_mas)
+static inline void *mas_wr_store_entry(struct ma_wr_state *wr_mas)
 {
        struct ma_state *mas = wr_mas->mas;
 
@@ -4324,7 +4141,7 @@ static inline void *mas_store_entry(struct ma_wr_state *wr_mas)
        }
 
        if (unlikely(!mas_wr_walk(wr_mas))) {
-               mas_spanning_store(wr_mas);
+               mas_wr_spanning_store(wr_mas);
                return wr_mas->content;
        }
 
@@ -5157,7 +4974,7 @@ static inline void mas_fill_gap(struct ma_state *mas, void *entry,
        mas->min = mas_safe_min(mas, pivots, pslot);
        mas->node = mn;
        mas->offset = slot;
-       mas_store_entry(&wr_mas);
+       mas_wr_store_entry(&wr_mas);
 }
 
 /*
@@ -5599,7 +5416,7 @@ void *mas_store(struct ma_state *mas, void *entry)
 #endif
 
        mas_wr_store_setup(&wr_mas);
-       mas_store_entry(&wr_mas);
+       mas_wr_store_entry(&wr_mas);
        return wr_mas.content;
 }
 
@@ -5619,7 +5436,7 @@ int mas_store_gfp(struct ma_state *mas, void *entry, gfp_t gfp)
        mas_wr_store_setup(&wr_mas);
        trace_ma_write(__func__, mas, 0, entry);
 retry:
-       mas_store_entry(&wr_mas);
+       mas_wr_store_entry(&wr_mas);
        if (unlikely(mas_nomem(mas, gfp)))
                goto retry;
 
@@ -5938,7 +5755,7 @@ write_retry:
        /* Must reset to ensure spanning writes of last slot are detected */
        mas_reset(mas);
        mas_wr_store_setup(&wr_mas);
-       mas_store_entry(&wr_mas);
+       mas_wr_store_entry(&wr_mas);
        if (mas_nomem(mas, GFP_KERNEL))
                goto write_retry;
 
@@ -6046,7 +5863,7 @@ int mtree_store_range(struct maple_tree *mt, unsigned long index,
 
        mtree_lock(mt);
 retry:
-       mas_store_entry(&wr_mas);
+       mas_wr_store_entry(&wr_mas);
        if (mas_nomem(&mas, gfp))
                goto retry;