bcachefs: Fix return code from btree_path_traverse_one()
authorKent Overstreet <kent.overstreet@linux.dev>
Wed, 16 Nov 2022 03:48:03 +0000 (22:48 -0500)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:09:46 +0000 (17:09 -0400)
trans->restarted is a positive error code, not the usual negative

Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/btree_iter.c
fs/bcachefs/btree_iter.h

index fc057ba..e4ea77d 100644 (file)
@@ -1079,7 +1079,7 @@ static int btree_path_traverse_one(struct btree_trans *trans,
                                   unsigned long trace_ip)
 {
        unsigned depth_want = path->level;
-       int ret = trans->restarted;
+       int ret = -((int) trans->restarted);
 
        if (unlikely(ret))
                goto out;
index 38bea61..635cf97 100644 (file)
@@ -359,6 +359,11 @@ __btree_iter_peek_node_and_restart(struct btree_trans *trans, struct btree_iter
        return b;
 }
 
+/*
+ * XXX
+ * this does not handle transaction restarts from bch2_btree_iter_next_node()
+ * correctly
+ */
 #define __for_each_btree_node(_trans, _iter, _btree_id, _start,                \
                              _locks_want, _depth, _flags, _b, _ret)    \
        for (bch2_trans_node_iter_init((_trans), &(_iter), (_btree_id), \