diff options
author | Kent Overstreet <kent.overstreet@linux.dev> | 2022-11-15 22:48:03 -0500 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@linux.dev> | 2023-10-22 17:09:46 -0400 |
commit | 0f35e0860a73a35e8c3aa1afebc45e75eb2fbae6 (patch) | |
tree | f2515a91e7583ed2cd55c8b06958a4ae20042122 /fs | |
parent | 6b1b186a5a8e9cf4770e9546c3606fef40666830 (diff) | |
download | lwn-0f35e0860a73a35e8c3aa1afebc45e75eb2fbae6.tar.gz lwn-0f35e0860a73a35e8c3aa1afebc45e75eb2fbae6.zip |
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>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/bcachefs/btree_iter.c | 2 | ||||
-rw-r--r-- | fs/bcachefs/btree_iter.h | 5 |
2 files changed, 6 insertions, 1 deletions
diff --git a/fs/bcachefs/btree_iter.c b/fs/bcachefs/btree_iter.c index fc057ba11190..e4ea77d7c1d8 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 38bea61ed7f8..635cf97f5692 100644 --- a/fs/bcachefs/btree_iter.h +++ b/fs/bcachefs/btree_iter.h @@ -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), \ |