summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@linux.dev>2022-11-15 22:48:03 -0500
committerKent Overstreet <kent.overstreet@linux.dev>2023-01-06 19:47:57 -0500
commit256c8189682f52fbc3ff8f6ddef9b24ecf7bb8c9 (patch)
tree32234455851123b9752aa9115772cd2f326cb67c
parent8167aa8068b24dd7e5a38a9103aa5a5e3bb28bd9 (diff)
bcachefs: Fix return code from btree_path_traverse_one()
trans->restarted is a positive error code, not the usual negative Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
-rw-r--r--fs/bcachefs/btree_iter.c2
-rw-r--r--fs/bcachefs/btree_iter.h5
2 files changed, 6 insertions, 1 deletions
diff --git a/fs/bcachefs/btree_iter.c b/fs/bcachefs/btree_iter.c
index 53ebcf1c93be..9bd181b21f4b 100644
--- a/fs/bcachefs/btree_iter.c
+++ b/fs/bcachefs/btree_iter.c
@@ -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;
diff --git a/fs/bcachefs/btree_iter.h b/fs/bcachefs/btree_iter.h
index 0ea37c0d39e9..d32f1a0522be 100644
--- a/fs/bcachefs/btree_iter.h
+++ b/fs/bcachefs/btree_iter.h
@@ -360,6 +360,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), \