bcachefs: bch2_btree_path_to_text() -> btree_path_idx_t
authorKent Overstreet <kent.overstreet@linux.dev>
Mon, 11 Dec 2023 04:29:06 +0000 (23:29 -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

index 0f904a79d4e51f55c8e6d1358d828aed5c77f69c..95c0a50ae03f4aa38cd295cbd819221ae58088b9 100644 (file)
@@ -1413,11 +1413,12 @@ void bch2_dump_trans_updates(struct btree_trans *trans)
        printbuf_exit(&buf);
 }
 
-noinline __cold
-void bch2_btree_path_to_text(struct printbuf *out, struct btree_path *path)
+static void bch2_btree_path_to_text(struct printbuf *out, struct btree_trans *trans, btree_path_idx_t path_idx)
 {
+       struct btree_path *path = trans->paths + path_idx;
+
        prt_printf(out, "path: idx %2u ref %u:%u %c %c btree=%s l=%u pos ",
-                  path->idx, path->ref, path->intent_ref,
+                  path_idx, path->ref, path->intent_ref,
                   path->preserve ? 'P' : ' ',
                   path->should_be_locked ? 'S' : ' ',
                   bch2_btree_id_str(path->btree_id),
@@ -1436,13 +1437,12 @@ void __bch2_trans_paths_to_text(struct printbuf *out, struct btree_trans *trans,
                                bool nosort)
 {
        struct trans_for_each_path_inorder_iter iter;
-       struct btree_path *path;
 
        if (!nosort)
                btree_trans_sort_paths(trans);
 
-       trans_for_each_path_inorder(trans, path, iter)
-               bch2_btree_path_to_text(out, path);
+       trans_for_each_path_idx_inorder(trans, iter)
+               bch2_btree_path_to_text(out, trans, iter.path_idx);
 }
 
 noinline __cold
index a4d1d26c706d8858353eb21bb7141230fde2305c..173c91e5f6b0604fdc5049833986347d8980e907 100644 (file)
@@ -125,6 +125,12 @@ static inline struct btree_path *prev_btree_path(struct btree_trans *trans, stru
                : NULL;
 }
 
+#define trans_for_each_path_idx_inorder(_trans, _iter)                 \
+       for (_iter = (struct trans_for_each_path_inorder_iter) { 0 };   \
+            (_iter.path_idx = trans->sorted[_iter.sorted_idx],         \
+             _iter.sorted_idx < (_trans)->nr_sorted);                  \
+            _iter.sorted_idx++)
+
 struct trans_for_each_path_inorder_iter {
        btree_path_idx_t        sorted_idx;
        btree_path_idx_t        path_idx;
@@ -835,7 +841,6 @@ __bch2_btree_iter_peek_and_restart(struct btree_trans *trans,
 })
 
 void bch2_trans_updates_to_text(struct printbuf *, struct btree_trans *);
-void bch2_btree_path_to_text(struct printbuf *, struct btree_path *);
 void bch2_trans_paths_to_text(struct printbuf *, struct btree_trans *);
 void bch2_dump_trans_updates(struct btree_trans *);
 void bch2_dump_trans_paths_updates(struct btree_trans *);