diff options
author | Kent Overstreet <kent.overstreet@gmail.com> | 2022-07-06 00:27:44 +0300 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@linux.dev> | 2023-10-23 00:09:36 +0300 |
commit | 0990efaeeab14de1e3e3bf2791808afebadd1cc4 (patch) | |
tree | e00b17389b2d18dbf21cee04a4870df9a7d1c551 /fs/bcachefs/btree_iter.h | |
parent | 90cecb921cfe95858a32995019f11c20b6339607 (diff) | |
download | linux-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.h | 9 |
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 |