]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
maple_tree: mas_store, mas_store_gfp, mas_nomem restructre
authorLiam R. Howlett <Liam.Howlett@Oracle.com>
Wed, 9 Dec 2020 22:02:04 +0000 (17:02 -0500)
committerLiam R. Howlett <Liam.Howlett@Oracle.com>
Tue, 5 Jan 2021 17:33:37 +0000 (12:33 -0500)
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
lib/maple_tree.c

index a94329c4b5b6dcb391871444727ba68c3bc4cee3..b5ce3027787c0b5ac3d4af6050df1d74923a5895 100644 (file)
@@ -5050,22 +5050,19 @@ void *mas_store(struct ma_state *mas, void *entry)
 {
        void *existing = NULL;
 
-       if (mas->index > mas->last)
-               goto invalid_range;
+       if (mas->index > mas->last) {
+               mas_set_err(mas, -EINVAL);
+               return NULL;
+       }
 
        existing = _mas_store(mas, entry, true);
-       if (mas_is_err(mas))
+       if (unlikely(mas_is_err(mas)))
                return existing;
 
-       if (!mte_is_leaf(mas->node)) // spanning store occurred
+       if (unlikely(!mte_is_leaf(mas->node))) // spanning store occurred
                mas->node = MAS_START;
 
        return existing;
-
-invalid_range:
-       mas_set_err(mas, -EINVAL);
-       return NULL;
-
 }
 
 int mas_store_gfp(struct ma_state *mas, void *entry, gfp_t gfp)
@@ -5078,13 +5075,13 @@ int mas_store_gfp(struct ma_state *mas, void *entry, gfp_t gfp)
 
 retry:
        _mas_store(mas, entry, true);
-       if (mas_nomem(mas, gfp))
+       if (unlikely(mas_nomem(mas, gfp)))
                goto retry;
 
-       if (mas_is_err(mas))
+       if (unlikely(mas_is_err(mas)))
                return xa_err(mas->node);
 
-       if (!mte_is_leaf(mas->node)) // spanning store occurred
+       if (unlikely(!mte_is_leaf(mas->node))) // spanning store occurred
                mas->node = MAS_START;
 
        return 0;
@@ -5183,7 +5180,7 @@ void mas_destroy(struct ma_state *mas)
 bool mas_nomem(struct ma_state *mas, gfp_t gfp)
        __must_hold(mas->tree->lock)
 {
-       if (mas->node != MA_ERROR(-ENOMEM)) {
+       if (likely(mas->node != MA_ERROR(-ENOMEM))) {
                mas_destroy(mas);
                return false;
        }