summaryrefslogtreecommitdiff
path: root/fs/bcachefs/btree_iter.h
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2022-07-06 00:27:44 +0300
committerKent Overstreet <kent.overstreet@linux.dev>2023-10-23 00:09:36 +0300
commit0990efaeeab14de1e3e3bf2791808afebadd1cc4 (patch)
treee00b17389b2d18dbf21cee04a4870df9a7d1c551 /fs/bcachefs/btree_iter.h
parent90cecb921cfe95858a32995019f11c20b6339607 (diff)
downloadlinux-0990efaeeab14de1e3e3bf2791808afebadd1cc4.tar.xz
bcachefs: btree_trans_too_many_iters() is now a transaction restart
All transaction restarts need a tracepoint - this is essential for debugging Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Diffstat (limited to 'fs/bcachefs/btree_iter.h')
-rw-r--r--fs/bcachefs/btree_iter.h9
1 files changed, 7 insertions, 2 deletions
diff --git a/fs/bcachefs/btree_iter.h b/fs/bcachefs/btree_iter.h
index c2f5afc9eeb9..1952a7683610 100644
--- a/fs/bcachefs/btree_iter.h
+++ b/fs/bcachefs/btree_iter.h
@@ -4,6 +4,7 @@
#include "bset.h"
#include "btree_types.h"
+#include "trace.h"
static inline void __btree_path_get(struct btree_path *path, bool intent)
{
@@ -384,8 +385,12 @@ static inline struct bkey_s_c bch2_btree_iter_peek_upto_type(struct btree_iter *
static inline int btree_trans_too_many_iters(struct btree_trans *trans)
{
- return hweight64(trans->paths_allocated) > BTREE_ITER_MAX / 2
- ? -EINTR : 0;
+ if (hweight64(trans->paths_allocated) > BTREE_ITER_MAX / 2) {
+ trace_trans_restart_too_many_iters(trans->fn, _THIS_IP_);
+ return btree_trans_restart(trans);
+ }
+
+ return 0;
}
static inline struct bkey_s_c