]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
bcachefs: bch2_btree_path_make_mut() -> btree_path_idx_t
authorKent Overstreet <kent.overstreet@linux.dev>
Fri, 8 Dec 2023 07:24:05 +0000 (02:24 -0500)
committerKent Overstreet <kent.overstreet@linux.dev>
Mon, 1 Jan 2024 16:47:43 +0000 (11:47 -0500)
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/btree_iter.c
fs/bcachefs/btree_iter.h
fs/bcachefs/btree_update_interior.c
fs/bcachefs/btree_write_buffer.c

index 5851b7895b3b8a7be82e46e4ad1539a7cdbd4349..b53f657e39fd828eb81872811f0fe9799c70746e 100644 (file)
@@ -1208,13 +1208,12 @@ static struct btree_path *btree_path_clone(struct btree_trans *trans, struct btr
 }
 
 __flatten
-struct btree_path *__bch2_btree_path_make_mut(struct btree_trans *trans,
-                        struct btree_path *path, bool intent,
-                        unsigned long ip)
+btree_path_idx_t __bch2_btree_path_make_mut(struct btree_trans *trans,
+                       btree_path_idx_t path, bool intent, unsigned long ip)
 {
-       __btree_path_put(path, intent);
-       path = btree_path_clone(trans, path, intent);
-       path->preserve = false;
+       __btree_path_put(trans->paths + path, intent);
+       path = btree_path_clone(trans, trans->paths + path, intent)->idx;
+       trans->paths[path].preserve = false;
        return path;
 }
 
@@ -1228,7 +1227,7 @@ __bch2_btree_path_set_pos(struct btree_trans *trans,
        bch2_trans_verify_not_in_restart(trans);
        EBUG_ON(!trans->paths[path_idx].ref);
 
-       path_idx = bch2_btree_path_make_mut(trans, trans->paths + path_idx, intent, ip)->idx;
+       path_idx = bch2_btree_path_make_mut(trans, path_idx, intent, ip);
 
        struct btree_path *path = trans->paths + path_idx;
        path->pos               = new_pos;
index 6427791a8219487246dd9c8b9fb634415b2383e3..42877b00e38ff7f1d623cbb4b4bbebeef7d4524d 100644 (file)
@@ -160,17 +160,18 @@ __trans_next_path_with_node(struct btree_trans *trans, struct btree *b,
             _path = __trans_next_path_with_node((_trans), (_b),        \
                                                 (_path)->idx + 1))
 
-struct btree_path *__bch2_btree_path_make_mut(struct btree_trans *, struct btree_path *,
-                        bool, unsigned long);
+btree_path_idx_t __bch2_btree_path_make_mut(struct btree_trans *, btree_path_idx_t,
+                                           bool, unsigned long);
 
-static inline struct btree_path * __must_check
+static inline btree_path_idx_t __must_check
 bch2_btree_path_make_mut(struct btree_trans *trans,
-                        struct btree_path *path, bool intent,
+                        btree_path_idx_t path, bool intent,
                         unsigned long ip)
 {
-       if (path->ref > 1 || path->preserve)
+       if (trans->paths[path].ref > 1 ||
+           trans->paths[path].preserve)
                path = __bch2_btree_path_make_mut(trans, path, intent, ip);
-       path->should_be_locked = false;
+       trans->paths[path].should_be_locked = false;
        return path;
 }
 
index d6b33cadc5a9295d2583bfd71b4dce79c0dc0c76..225b82146a0df5cbda46b37377be178c4b960dae 100644 (file)
@@ -34,12 +34,12 @@ static struct btree_path *get_unlocked_mut_path(struct btree_trans *trans,
                                                unsigned level,
                                                struct bpos pos)
 {
-       struct btree_path *path;
-
-       path = trans->paths + bch2_path_get(trans, btree_id, pos, level + 1, level,
+       btree_path_idx_t path_idx = bch2_path_get(trans, btree_id, pos, level + 1, level,
                             BTREE_ITER_NOPRESERVE|
                             BTREE_ITER_INTENT, _RET_IP_);
-       path = bch2_btree_path_make_mut(trans, path, true, _RET_IP_);
+       path_idx = bch2_btree_path_make_mut(trans, path_idx, true, _RET_IP_);
+
+       struct btree_path *path = trans->paths + path_idx;
        bch2_btree_path_downgrade(trans, path);
        __bch2_btree_path_unlock(trans, path);
        return path;
@@ -2167,7 +2167,7 @@ static int __bch2_btree_node_update_key(struct btree_trans *trans,
        if (parent) {
                bch2_trans_copy_iter(&iter2, iter);
 
-               iter2.path = bch2_btree_path_make_mut(trans, iter2.path,
+               iter2.path = trans->paths + bch2_btree_path_make_mut(trans, iter2.path->idx,
                                iter2.flags & BTREE_ITER_INTENT,
                                _THIS_IP_);
 
index 6bb5756b5db70da9dfdd6230a18a59407c6e304e..23e34d1b66fe920c4f027a19c70dd69b4d802ba3 100644 (file)
@@ -140,7 +140,7 @@ static inline int wb_flush_one(struct btree_trans *trans, struct btree_iter *ite
         * set_pos and traverse():
         */
        if (iter->path->ref > 1)
-               iter->path = __bch2_btree_path_make_mut(trans, iter->path, true, _THIS_IP_);
+               iter->path = trans->paths + __bch2_btree_path_make_mut(trans, iter->path->idx, true, _THIS_IP_);
 
        path = iter->path;